﻿//
// (C) Copyright 2009 Irantha Suwandarathna (iranthas@hotmail.com)
// All rights reserved.
//

/* Copyright (c) 2001-2008, The HSQL Development Group
 * All rights reserved.
 *
 * Redistribution and use _in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions _in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer _in the documentation
 * and/or other materials provided with the distribution.
 *
 * Neither the name of the HSQL Development Group nor the names of its
 * contributors may be used to endorse or promote products derived from this
 * software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EffiProz.Core.Lib;

namespace EffiProz.Core
{
    public class Tokens
    {
        //
        // SQL 200n reserved words full set
        public const String T_ABS = "ABS";
        public const String T_ALL = "ALL";
        public const String T_ALLOCATE = "ALLOCATE";
        public const String T_ALTER = "ALTER";
        public const String T_AND = "AND";
        public const String T_ANY = "ANY";
        public const String T_ARE = "ARE";
        public const String T_ARRAY = "ARRAY";
        public const String T_AS = "AS";
        public const String T_ASENSITIVE = "ASENSITIVE";
        public const String T_ASYMMETRIC = "ASYMMETRIC";
        public const String T_AT = "AT";
        public const String T_ATOMIC = "ATOMIC";
        public const String T_AUTHORIZATION = "AUTHORIZATION";
        public const String T_AVG = "AVG";
        public const String T_BEGIN = "BEGIN";
        public const String T_BETWEEN = "BETWEEN";
        public const String T_BIGINT = "BIGINT";
        public const String T_BINARY = "BINARY";
        public const String T_BIT_LENGTH = "BIT_LENGTH";
        public const String T_BLOB = "BLOB";
        public const String T_BOOLEAN = "BOOLEAN";
        public const String T_BOTH = "BOTH";
        public const String T_BY = "BY";
        public const String T_CALL = "CALL";
        public const String T_CALLED = "CALLED";
        public const String T_CARDINALITY = "CARDINALITY";
        public const String T_CASCADED = "CASCADED";
        public const String T_CASE = "CASE";
        public const String T_CAST = "CAST";
        public const String T_CEIL = "CEIL";
        public const String T_CEILING = "CEILING";
        public const String T_CHAR = "CHAR";
        public const String T_CHAR_LENGTH = "CHAR_LENGTH";
        public const String T_CHARACTER = "CHARACTER";
        public const String T_CHARACTER_LENGTH = "CHARACTER_LENGTH";
        public const String T_CHECK = "CHECK";
        public const String T_CLOB = "CLOB";
        public const String T_CLOSE = "CLOSE";
        public const String T_COALESCE = "COALESCE";
        public const String T_COLLATE = "COLLATE";
        public const String T_COLLECT = "COLLECT";
        public const String T_COLUMN = "COLUMN";
        public const String T_COMMIT = "COMMIT";
        public const String T_CONDITION = "CONDIITON";
        public const String T_CONNECT = "CONNECT";
        public const String T_CONSTRAINT = "CONSTRAINT";
        public const String T_CONVERT = "CONVERT";
        public const String T_CORR = "CORR";
        public const String T_CORRESPONDING = "CORRESPONDING";
        public const String T_COUNT = "COUNT";
        public const String T_COVAR_POP = "COVAR_POP";
        public const String T_COVAR_SAMP = "COVAR_SAMP";
        public const String T_CREATE = "CREATE";
        public const String T_CROSS = "CROSS";
        public const String T_CUBE = "CUBE";
        public const String T_CUME_DIST = "CUME_DIST";
        public const String T_CURRENT = "CURRENT";
        public const String T_CURRENT_CATALOG = "CURRENT_CATALOG";
        public const String T_CURRENT_DATE = "CURRENT_DATE";
        public const String T_CURRENT_DEFAULT_TRANSFORM_GROUP =
            "CURRENT_DEFAULT_TRANSFORM_GROUP";
        public const String T_CURRENT_PATH = "CURRENT_PATH";
        public const String T_CURRENT_ROLE = "CURRENT_ROLE";
        public const String T_CURRENT_SCHEMA = "CURRENT_SCHEMA";
        public const String T_CURRENT_TIME = "CURRENT_TIME";
        public const String T_CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP";
        public const String T_CURRENT_TRANSFORM_GROUP_FOR_TYPE =
            "CURRENT_TRANSFORM_GROUP_FOR_TYPE";
        public const String T_CURRENT_USER = "CURRENT_USER";
        public const String T_CURSOR = "CURSOR";
        public const String T_CYCLE = "CYCLE";
        public const String T_DATE = "DATE";
        public const String T_DAY = "DAY";
        public const String T_DEALLOCATE = "DEALLOCATE";
        public const String T_DEC = "DEC";
        public const String T_DECIMAL = "DECIMAL";
        public const String T_DECLARE = "DECLARE";
        public const String T_DEFAULT = "DEFAULT";
        public const String T_DELETE = "DELETE";
        public const String T_DENSE_RANK = "DENSE_RANK";
        public const String T_DEREF = "DEREF";
        public const String T_DESCRIBE = "DESCRIBE";
        public const String T_DETERMINISTIC = "DETERMINISTIC";
        public const String T_DISCONNECT = "DISCONNECT";
        public const String T_DISTINCT = "DISTINCT";
        public const String T_DO = "DO";
        public const String T_DOUBLE = "DOUBLE";
        public const String T_DROP = "DROP";
        public const String T_DYNAMIC = "DYNAMIC";
        public const String T_EACH = "EACH";
        public const String T_ELEMENT = "ELEMENT";
        public const String T_ELSE = "ELSE";
        public const String T_ELSEIF = "ELSEIF";
        public const String T_END = "END";
        public const String T_END_EXEC = "END_EXEC";
        public const String T_ESCAPE = "ESCAPE";
        public const String T_EVERY = "EVERY";
        public const String T_EXCEPT = "EXCEPT";
        public const String T_EXEC = "EXEC";
        public const String T_EXECUTE = "EXECUTE";
        public const String T_EXISTS = "EXISTS";
        public const String T_EXP = "EXP";
        public const String T_EXTERNAL = "EXTERNAL";
        public const String T_EXTRACT = "EXTRACT";
        public const String T_FALSE = "FALSE";
        public const String T_FETCH = "FETCH";
        public const String T_FILTER = "FILTER";
        public const String T_FIRST_VALUE = "FIRST_VALUE";
        public const String T_FLOAT = "FLOAT";
        public const String T_FLOOR = "FLOOR";
        public const String T_FOR = "FOR";
        public const String T_FOREIGN = "FOREIGN";
        public const String T_FREE = "FREE";
        public const String T_FROM = "FROM";
        public const String T_FULL = "FULL";
        public const String T_FUNCTION = "FUNCTION";
        public const String T_FUSION = "FUSION";
        public const String T_GET = "GET";
        public const String T_GLOBAL = "GLOBAL";
        public const String T_GRANT = "GRANT";
        public const String T_GROUP = "GROUP";
        public const String T_GROUPING = "GROUPING";
        public const String T_HANDLER = "HANDLER";
        public const String T_HAVING = "HAVING";
        public const String T_HOLD = "HOLD";
        public const String T_HOUR = "HOUR";
        public const String T_IDENTITY = "IDENTITY";
        public const String T_IF = "IF";
        public const String T_IN = "IN";
        public const String T_INDICATOR = "INDICATOR";
        public const String T_INNER = "INNER";
        public const String T_INOUT = "INOUT";
        public const String T_INSENSITIVE = "INSENSITIVE";
        public const String T_INSERT = "INSERT";
        public const String T_INT = "INT";
        public const String T_INTEGER = "INTEGER";
        public const String T_INTERSECT = "INTERSECT";
        public const String T_INTERSECTION = "INTERSECTION";
        public const String T_INTERVAL = "INTERVAL";
        public const String T_INTO = "INTO";
        public const String T_ITERATE = "ITERATE";
        public const String T_IS = "IS";
        public const String T_JAR = "JAR";             // SQL/JRT
        public const String T_JOIN = "JOIN";
        public const String T_LAG = "LAG";
        public const String T_LANGUAGE = "LANGUAGE";
        public const String T_LARGE = "LARGE";
        public const String T_LAST_VALUE = "LAST_VALUE";
        public const String T_LATERAL = "LATERAL";
        public const String T_LEAD = "LEAD";
        public const String T_LEADING = "LEADING";
        public const String T_LEAVE = "LEAVE";
        public const String T_LEFT = "LEFT";
        public const String T_LIKE = "LIKE";
        public const String T_LIKE_REGX = "LIKE_REGX";
        public const String T_LN = "LN";
        public const String T_LOCAL = "LOCAL";
        public const String T_LOCALTIME = "LOCALTIME";
        public const String T_LOCALTIMESTAMP = "LOCALTIMESTAMP";
        public const String T_LOOP = "LOOP";
        public const String T_LOWER = "LOWER";
        public const String T_MATCH = "MATCH";
        public const String T_MAX = "MAX";
        public const String T_MAX_CARDINALITY = "MAX_CARDINALITY";
        public const String T_MEMBER = "MEMBER";
        public const String T_MERGE = "MERGE";
        public const String T_METHOD = "METHOD";
        public const String T_MIN = "MIN";
        public const String T_MINUTE = "MINUTE";
        public const String T_MOD = "MOD";
        public const String T_MODIFIES = "MODIFIES";
        public const String T_MODULE = "MODULE";
        public const String T_MONTH = "MONTH";
        public const String T_MULTISET = "MULTISET";
        public const String T_NATIONAL = "NATIONAL";
        public const String T_NATURAL = "NATURAL";
        public const String T_NCHAR = "NCHAR";
        public const String T_NCLOB = "NCLOB";
        public const String T_NEW = "NEW";
        public const String T_NO = "NO";
        public const String T_NONE = "NONE";
        public const String T_NORMALIZE = "NORMALIZE";
        public const String T_NOT = "NOT";
        public const String T_NTH_VALUE = "NTH_VALUE";
        public const String T_NTILE = "NTILE";
        public const String T_NULL = "NULL";
        public const String T_NULLIF = "NULLIF";
        public const String T_NUMERIC = "NUMERIC";
        public const String T_OCCURRENCES_REGEX = "OCCURRENCES_REGEX";
        public const String T_OCTET_LENGTH = "OCTET_LENGTH";
        public const String T_OF = "OF";
        public const String T_OFFSET = "OFFSET";
        public const String T_OLD = "OLD";
        public const String T_ON = "ON";
        public const String T_ONLY = "ONLY";
        public const String T_OPEN = "OPEN";
        public const String T_OR = "OR";
        public const String T_ORDER = "ORDER";
        public const String T_OUT = "OUT";
        public const String T_OUTER = "OUTER";
        public const String T_OVER = "OVER";
        public const String T_OVERLAPS = "OVERLAPS";
        public const String T_OVERLAY = "OVERLAY";
        public const String T_PARAMETER = "PARAMETER";
        public const String T_PARTITION = "PARTITION";
        public const String T_PERCENT_RANK = "PERCENT_RANK";
        public const String T_PERCENTILE_CONT = "PERCENTILE_CONT";
        public const String T_PERCENTILE_DISC = "PERCENTILE_DISC";
        public const String T_POSITION = "POSITION";
        public const String T_POSITION_REGEX = "POSITION_REGEX";
        public const String T_POWER = "POWER";
        public const String T_PRECISION = "PRECISION";
        public const String T_PREPARE = "PREPARE";
        public const String T_PRIMARY = "PRIMARY";
        public const String T_PROCEDURE = "PROCEDURE";
        public const String T_RANGE = "RANGE";
        public const String T_RANK = "RANK";
        public const String T_READS = "READS";
        public const String T_REAL = "REAL";
        public const String T_RECURSIVE = "RECURSIVE";
        public const String T_REF = "REF";
        public const String T_REFERENCES = "REFERENCES";
        public const String T_REFERENCING = "REFERENCING";
        public const String T_REGR_AVGX = "REGR_AVGX";
        public const String T_REGR_AVGY = "REGR_AVGY";
        public const String T_REGR_COUNT = "REGR_COUNT";
        public const String T_REGR_INTERCEPT = "REGR_INTERCEPT";
        public const String T_REGR_R2 = "REGR_R2";
        public const String T_REGR_SLOPE = "REGR_SLOPE";
        public const String T_REGR_SXX = "REGR_SXX";
        public const String T_REGR_SXY = "REGR_SXY";
        public const String T_REGR_SYY = "REGR_SYY";
        public const String T_RELEASE = "RELEASE";
        public const String T_REPEAT = "REPEAT";
        public const String T_RESIGNAL = "RESIGNAL";
        public const String T_RESULT = "RESULT";
        public const String T_RETURN = "RETURN";
        public const String T_RETURNS = "RETURNS";
        public const String T_REVOKE = "REVOKE";
        public const String T_RIGHT = "RIGHT";
        public const String T_ROLLBACK = "ROLLBACK";
        public const String T_ROLLUP = "ROLLUP";
        public const String T_ROW = "ROW";
        public const String T_ROW_NUMBER = "ROW_NUMBER";
        public const String T_ROWS = "ROWS";
        public const String T_SAVEPOINT = "SAVEPOINT";
        public const String T_SCOPE = "SCOPE";
        public const String T_SCROLL = "SCROLL";
        public const String T_SEARCH = "SEARCH";
        public const String T_SECOND = "SECOND";
        public const String T_SELECT = "SELECT";
        public const String T_SENSITIVE = "SENSITIVE";
        public const String T_SESSION_USER = "SESSION_USER";
        public const String T_SET = "SET";
        public const String T_SIGNAL = "SIGNAL";
        public const String T_SIMILAR = "SIMILAR";
        public const String T_SMALLINT = "SMALLINT";
        public const String T_SOME = "SOME";
        public const String T_SPECIFIC = "SPECIFIC";
        public const String T_SPECIFICTYPE = "SPECIFICTYPE";
        public const String T_SQL = "SQL";
        public const String T_SQLEXCEPTION = "SQLEXCEPTION";
        public const String T_SQLSTATE = "SQLSTATE";
        public const String T_SQLWARNING = "SQLWARNING";
        public const String T_SQRT = "SQRT";
        public const String T_START = "START";
        public const String T_STATIC = "STATIC";
        public const String T_STDDEV_POP = "STDDEV_POP";
        public const String T_STDDEV_SAMP = "STDDEV_SAMP";
        public const String T_SUBMULTISET = "SUBMULTISET";
        public const String T_SUBSTRING = "SUBSTRING";
        public const String T_SUBSTRING_REGEX = "SUBSTRING_REGEX";
        public const String T_SUM = "SUM";
        public const String T_SYMMETRIC = "SYMMETRIC";
        public const String T_SYSTEM = "SYSTEM";
        public const String T_SYSTEM_USER = "SYSTEM_USER";
        public const String T_TABLE = "TABLE";
        public const String T_TABLESAMPLE = "TABLESAMPLE";
        public const String T_THEN = "THEN";
        public const String T_TIME = "TIME";
        public const String T_TIMESTAMP = "TIMESTAMP";
        public const String T_TIMEZONE_HOUR = "TIMEZONE_HOUR";
        public const String T_TIMEZONE_MINUTE = "TIMEZONE_MINUTE";
        public const String T_TO = "TO";
        public const String T_TRAILING = "TRAILING";
        public const String T_TRANSLATE = "TRANSLATE";
        public const String T_TRANSLATE_REGEX = "TRANSLATE_REGEX";
        public const String T_TRANSLATION = "TRANSLATION";
        public const String T_TREAT = "TREAT";
        public const String T_TRIGGER = "TRIGGER";
        public const String T_TRIM = "TRIM";
        public const String T_TRIM_ARRAY = "TRIM_ARRAY";
        public const String T_TRUE = "TRUE";
        public const String T_TRUNCATE = "TRUNCATE";
        public const String T_UESCAPE = "UESCAPE";
        public const String T_UNION = "UNION";
        public const String T_UNIQUE = "UNIQUE";
        public const String T_UNKNOWN = "UNKNOWN";
        public const String T_UNNEST = "UNNEST";
        public const String T_UNTIL = "UNTIL";
        public const String T_UPDATE = "UPDATE";
        public const String T_UPPER = "UPPER";
        public const String T_USER = "USER";
        public const String T_USING = "USING";
        public const String T_VALUE = "VALUE";
        public const String T_VALUES = "VALUES";
        public const String T_VAR_POP = "VAR_POP";
        public const String T_VAR_SAMP = "VAR_SAMP";
        public const String T_VARBINARY = "VARBINARY";
        public const String T_VARCHAR = "VARCHAR";
        public const String T_VARYING = "VARYING";
        public const String T_WHEN = "WHEN";
        public const String T_WHENEVER = "WHENEVER";
        public const String T_WHERE = "WHERE";
        public const String T_WHILE = "WHILE";
        public const String T_WIDTH_BUCKET = "WIDTH_BUCKET";
        public const String T_WINDOW = "WINDOW";
        public const String T_WITH = "WITH";
        public const String T_WITHIN = "WITHIN";
        public const String T_WITHOUT = "WITHOUT";
        public const String T_YEAR = "YEAR";

        // ops
        public const String T_ASTERISK = "*";
        public const String T_COMMA = ",";
        public const String T_CIRCUMFLEX = "^";
        public const String T_CLOSEBRACKET = ")";
        public const String T_COLON = ":";
        public const String T_CONCAT = "||";
        public const String T_DIVIDE = "/";
        public const String T_EQUALS = "=";
        public const String T_GREATER = ">";
        public const String T_GREATER_EQUALS = ">=";
        public const String T_LESS = "<";
        public const String T_LESS_EQUALS = "<=";
        public const String T_PERCENT = "%";
        public const String T_PLUS = "+";
        public const String T_MINUS = "-";
        public const String T_NOT_EQUALS = "<>";
        public const String T_NOT_EQUALS_ALT = "!=";
        public const String T_OPENBRACKET = "(";
        public const String T_QUESTION = "?";
        public const String T_SEMICOLON = ";";
        public const String T_DOUBLE_COLON = "::";
        public const String T_ATSYM = "@";

        // SQL:200n non-reserved word list
        public const String T_A = "A";
        public const String T_ABSOLUTE = "ABSOLUTE";
        public const String T_ACTION = "ACTION";
        public const String T_ADA = "ADA";
        public const String T_ADMIN = "ADMIN";
        public const String T_AFTER = "AFTER";
        public const String T_ALWAYS = "ALWAYS";
        public const String T_ASC = "ASC";
        public const String T_ASSERTION = "ASSERTION";
        public const String T_ASSIGNMENT = "ASSIGNMENT";
        public const String T_ATTRIBUTE = "ATTRIBUTE";
        public const String T_ATTRIBUTES = "ATTRIBUTES";
        public const String T_BEFORE = "BEFORE";
        public const String T_BERNOULLI = "BERNOULLI";
        public const String T_BREADTH = "BREADTH";
        public const String T_C = "C";
        public const String T_CASCADE = "CASCADE";
        public const String T_CATALOG = "CATALOG";
        public const String T_CATALOG_NAME = "CATALOG_NAME";
        public const String T_CHAIN = "CHAIN";
        public const String T_CHARACTER_SET_CATALOG = "CHARACTER_SET_CATALOG";
        public const String T_CHARACTER_SET_NAME = "CHARACTER_SET_NAME";
        public const String T_CHARACTER_SET_SCHEMA = "CHARACTER_SET_SCHEMA";
        public const String T_CHARACTERISTICS = "CHARACTERISTICS";
        public const String T_CHARACTERS = "CHARACTERS";
        public const String T_CLASS_ORIGIN = "CLASS_ORIGIN";
        public const String T_COBOL = "COBOL";
        public const String T_COLLATION = "COLLATION";
        public const String T_COLLATION_CATALOG = "COLLATION_CATALOG";
        public const String T_COLLATION_NAME = "COLLATION_NAME";
        public const String T_COLLATION_SCHEMA = "COLLATION_SCHEMA";
        public const String T_COLUMN_NAME = "COLUMN_NAME";
        public const String T_COMMAND_FUNCTION = "COMMAND_FUNCTION";
        public const String T_COMMAND_FUNCTION_CODE = "COMMAND_FUNCTION_CODE";
        public const String T_COMMITTED = "COMMITTED";
        public const String T_COMPARABLE = "COMPARABLE";        // SQL/JRT
        public const String T_CONDITION_IDENTIFIER = "CONDIITON_IDENTIFIER";
        public const String T_CONDITION_NUMBER = "CONDITION_NUMBER";
        public const String T_CONNECTION_NAME = "CONNECTION_NAME";
        public const String T_CONSTRAINT_CATALOG = "CONSTRAINT_CATALOG";
        public const String T_CONSTRAINT_NAME = "CONSTRAINT_NAME";
        public const String T_CONSTRAINT_SCHEMA = "CONSTRAINT_SCHEMA";
        public const String T_CONSTRAINTS = "CONSTRAINTS";
        public const String T_CONSTRUCTOR = "CONSTRUCTOR";
        public const String T_CONTAINS = "CONTAINS";
        public const String T_CONTINUE = "CONTINUE";
        public const String T_CURRENT_COLLATION = "CURRENT_COLLATION";
        public const String T_CURSOR_NAME = "CURSOR_NAME";
        public const String T_DATA = "DATA";
        public const String T_DATETIME_INTERVAL_CODE = "DATETIME_INTERVAL_CODE";
        public const String T_DATETIME_INTERVAL_PRECISION =
            "DATETIME_INTERVAL_PRECISION";
        public const String T_DEFAULTS = "DEFAULTS";
        public const String T_DEFERRABLE = "DEFERRABLE";
        public const String T_DEFERRED = "DEFERRED";
        public const String T_DEFINED = "DEFINED";
        public const String T_DEFINER = "DEFINER";
        public const String T_DEGREE = "DEGREE";
        public const String T_DEPTH = "DEPTH";
        public const String T_DERIVED = "DERIVED";
        public const String T_DESC = "DESC";
        public const String T_DESCRIPTOR = "DESCRIPTOR";
        public const String T_DIAGNOSTICS = "DIAGNOSTICS";
        public const String T_DISPATCH = "DISPATCH";
        public const String T_DOMAIN = "DOMAIN";
        public const String T_DYNAMIC_FUNCTION = "DYNAMIC_FUNCTION";
        public const String T_DYNAMIC_FUNCTION_CODE = "DYNAMIC_FUNCTION_CODE";
        public const String T_EXCEPTION = "EXCEPTION";
        public const String T_EXCLUDE = "EXCLUDE";
        public const String T_EXCLUDING = "EXCLUDING";
        public const String T_EXIT = "EXIT";
        public const String T_FINAL = "FINAL";
        public const String T_FIRST = "FIRST";
        public const String T_FOLLOWING = "FOLLOWING";
        public const String T_FORTRAN = "FORTRAN";
        public const String T_FOUND = "FOUND";
        public const String T_G_FACTOR = "G";
        public const String T_GENERAL = "GENERAL";
        public const String T_GO = "GO";
        public const String T_GOTO = "GOTO";
        public const String T_GRANTED = "GRANTED";
        public const String T_HIERARCHY = "HIERARCHY";
        public const String T_IMPLEMENTATION = "IMPLEMENTATION";
        public const String T_INCLUDING = "INCLUDING";
        public const String T_INCREMENT = "INCREMENT";
        public const String T_INITIALLY = "INITIALLY";
        public const String T_INPUT = "INPUT";
        public const String T_INSTANCE = "INSTANCE";
        public const String T_INSTANTIABLE = "INSTANTIABLE";
        public const String T_INSTEAD = "INSTEAD";
        public const String T_INTERFACE = "INTERFACE";    // SQL/JRT
        public const String T_INVOKER = "INVOKER";
        public const String T_ISOLATION = "ISOLATION";
        public const String T_JAVA = "JAVA";         // SQL/JRT
        public const String T_K_FACTOR = "K";
        public const String T_KEY = "KEY";
        public const String T_KEY_MEMBER = "KEY_MEMBER";
        public const String T_KEY_TYPE = "KEY_TYPE";
        public const String T_LAST = "LAST";
        public const String T_LENGTH = "LENGTH";
        public const String T_LEVEL = "LEVEL";
        public const String T_LOCATOR = "LOCATOR";
        public const String T_M_FACTOR = "M";
        public const String T_MAP = "MAP";
        public const String T_MATCHED = "MATCHED";
        public const String T_MAXVALUE = "MAXVALUE";
        public const String T_MESSAGE_LENGTH = "MESSAGE_LENGTH";
        public const String T_MESSAGE_OCTET_LENGTH = "MESSAGE_OCTET_LENGTH";
        public const String T_MESSAGE_TEXT = "MESSAGE_TEXT";
        public const String T_MINVALUE = "MINVALUE";
        public const String T_MORE = "MORE";
        public const String T_MUMPS = "MUMPS";
        public const String T_NAME = "NAME";
        public const String T_NAMES = "NAMES";
        public const String T_NESTING = "NESTING";
        public const String T_NEXT = "NEXT";
        public const String T_NORMALIZED = "NORMALIZED";
        public const String T_NULLABLE = "NULLABLE";
        public const String T_NULLS = "NULLS";
        public const String T_NUMBER = "NUMBER";
        public const String T_OBJECT = "OBJECT";
        public const String T_OCTETS = "OCTETS";
        public const String T_OPTION = "OPTION";
        public const String T_OPTIONS = "OPTIONS";
        public const String T_ORDERING = "ORDERING";
        public const String T_ORDINALITY = "ORDINALITY";
        public const String T_OTHERS = "OTHERS";
        public const String T_OVERRIDING = "OVERRIDING";
        public const String T_P_FACTOR = "P";
        public const String T_PAD = "PAD";
        public const String T_PARAMETER_MODE = "PARAMETER_MODE";
        public const String T_PARAMETER_NAME = "PARAMETER_NAME";
        public const String T_PARAMETER_ORDINAL_POSITION =
            "PARAMETER_ORDINAL_POSITION";
        public const String T_PARAMETER_SPECIFIC_CATALOG =
            "PARAMETER_SPECIFIC_CATALOG";
        public const String T_PARAMETER_SPEC_NAME = "PARAMETER_SPECIFIC_NAME";
        public const String T_PARAMETER_SPEC_SCHEMA = "PARAMETER_SPECIFIC_SCHEMA";
        public const String T_PARTIAL = "PARTIAL";
        public const String T_PASCAL = "PASCAL";
        public const String T_PATH = "PATH";
        public const String T_PLACING = "PLACING";
        public const String T_PLI = "PLI";
        public const String T_PRECEDING = "PRECEDING";
        public const String T_PRESERVE = "PRESERVE";
        public const String T_PRIOR = "PRIOR";
        public const String T_PRIVILEGES = "PRIVILEGES";
        public const String T_PUBLIC = "PUBLIC";
        public const String T_READ = "READ";
        public const String T_RELATIVE = "RELATIVE";
        public const String T_REPEATABLE = "REPEATABLE";
        public const String T_RESTART = "RESTART";
        public const String T_RETURNED_CARDINALITY = "RETURNED_CARDINALITY";
        public const String T_RETURNED_LENGTH = "RETURNED_LENGTH";
        public const String T_RETURNED_OCTET_LENGTH = "RETURNED_OCTET_LENGTH";
        public const String T_RETURNED_SQLSTATE = "RETURNED_SQLSTATE";
        public const String T_ROLE = "ROLE";
        public const String T_ROUTINE = "ROUTINE";
        public const String T_ROUTINE_CATALOG = "ROUTINE_CATALOG";
        public const String T_ROUTINE_NAME = "ROUTINE_NAME";
        public const String T_ROUTINE_SCHEMA = "ROUTINE_SCHEMA";
        public const String T_ROW_COUNT = "ROW_COUNT";
        public const String T_SCALE = "SCALE";
        public const String T_SCHEMA = "SCHEMA";
        public const String T_SCHEMA_NAME = "SCHEMA_NAME";
        public const String T_SCOPE_CATALOG = "SCOPE_CATALOG";
        public const String T_SCOPE_NAME = "SCOPE_NAME";
        public const String T_SCOPE_SCHEMA = "SCOPE_SCHEMA";
        public const String T_SECTION = "SECTION";
        public const String T_SECURITY = "SECURITY";
        public const String T_SELF = "SELF";
        public const String T_SEQUENCE = "SEQUENCE";
        public const String T_SERIALIZABLE = "SERIALIZABLE";
        public const String T_SERVER_NAME = "SERVER_NAME";
        public const String T_SESSION = "SESSION";
        public const String T_SETS = "SETS";
        public const String T_SIMPLE = "SIMPLE";
        public const String T_SIZE = "SIZE";
        public const String T_SOURCE = "SOURCE";
        public const String T_SPACE = "SPACE";
        public const String T_SPECIFIC_NAME = "SPECIFIC_NAME";
        public const String T_SQLDATA = "SQLDATA";      // SQL/JRT
        public const String T_STACKED = "STACKED";
        public const String T_STATE = "STATE";
        public const String T_STATEMENT = "STATEMENT";
        public const String T_STRUCTURE = "STRUCTURE";
        public const String T_STYLE = "STYLE";
        public const String T_SUBCLASS_ORIGIN = "SUBCLASS_ORIGIN";
        public const String T_T_FACTOR = "T";
        public const String T_TABLE_NAME = "TABLE_NAME";
        public const String T_TEMPORARY = "TEMPORARY";
        public const String T_TIES = "TIES";
        public const String T_TOP_LEVEL_COUNT = "TOP_LEVEL_COUNT";
        public const String T_TRANSACTION = "TRANSACTION";
        public const String T_TRANSACT_COMMITTED = "TRANSACTIONS_COMMITTED";
        public const String T_TRANSACTION_ROLLED_BACK = "TRANSACTIONS_ROLLED_BACK";
        public const String T_TRANSACT_ACTIVE = "TRANSACTION_ACTIVE";
        public const String T_TRANSFORM = "TRANSFORM";
        public const String T_TRANSFORMS = "TRANSFORMS";
        public const String T_TRIGGER_CATALOG = "TRIGGER_CATALOG";
        public const String T_TRIGGER_NAME = "TRIGGER_NAME";
        public const String T_TRIGGER_SCHEMA = "TRIGGER_SCHEMA";
        public const String T_TYPE = "TYPE";
        public const String T_UNBOUNDED = "UNBOUNDED";
        public const String T_UNCOMMITTED = "UNCOMMITTED";
        public const String T_UNDER = "UNDER";
        public const String T_UNDO = "UNDO";
        public const String T_UNNAMED = "UNNAMED";
        public const String T_USAGE = "USAGE";
        public const String T_USER_DEFINED_TYPE_CATALOG =
            "USER_DEFINED_TYPE_CATALOG";
        public const String T_USER_DEFINED_TYPE_CODE = "USER_DEFINED_TYPE_CODE";
        public const String T_USER_DEFINED_TYPE_NAME = "USER_DEFINED_TYPE_NAME";
        public const String T_USER_DEFINED_TYPE_SCHEMA =
            "USER_DEFINED_TYPE_SCHEMA";
        public const String T_VIEW = "VIEW";
        public const String T_WORK = "WORK";
        public const String T_WRITE = "WRITE";
        public const String T_ZONE = "ZONE";

        // other tokens
        public const String T_ADD = "ADD";
        public const String T_ALIAS = "ALIAS";
        public const String T_AUTOCOMMIT = "AUTOCOMMIT";
        public const String T_BACKUP = "BACKUP";
        public const String T_BIT = "BIT";
        public const String T_BITLENGTH = "BITLENGTH";
        public const String T_CACHE = "CACHE";
        public const String T_CACHED = "CACHED";
        public const String T_CASEWHEN = "CASEWHEN";
        public const String T_CHECKPOINT = "CHECKPOINT";
        public const String T_CLASS = "CLASS";
        public const String T_COMPACT = "COMPACT";
        public const String T_COMPRESSED = "COMPRESSED";
        public const String T_CONTROL = "CONTROL";
        public const String T_CURDATE = "CURDATE";
        public const String T_CURTIME = "CURTIME";
        public const String T_DATABASE = "DATABASE";
        public const String T_DEFRAG = "DEFRAG";
        public const String T_DELAY = "DELAY";
        public const String T_EXPLAIN = "EXPLAIN";
        public const String T_EVENT = "EVENT";
        public const String T_FILE = "FILE";
        public const String T_FILES = "FILES";
        public const String T_FOLD = "FOLD";
        public const String T_GENERATED = "GENERATED";
        public const String T_HEADER = "HEADER";
        public const String T_IFNULL = "IFNULL";
        public const String T_IGNORECASE = "IGNORECASE";
        public const String T_IMMEDIATELY = "IMMEDIATELY";
        public const String T_INDEX = "INDEX";
        public const String T_INITIAL = "INITIAL";
        public const String T_INTEGRITY = "INTEGRITY";
        public const String T_ISAUTOCOMMIT = "ISAUTOCOMMIT";
        public const String T_ISREADONLYDATABASE = "ISREADONLYDATABASE";
        public const String T_ISREADONLYDATABASEFILES = "ISREADONLYDATABASEFILES";
        public const String T_ISREADONLYSESSION = "ISREADONLYSESSION";
        public const String T_LIMIT = "LIMIT";
        public const String T_LOCK = "LOCK";
        public const String T_LOCKS = "LOCKS";
        public const String T_MAXROWS = "MAXROWS";
        public const String T_MEMORY = "MEMORY";
        public const String T_MILLIS = "MILLIS";
        public const String T_MINUS_EXCEPT = "MINUS";
        public const String T_MVCC = "MVCC";
        public const String T_MVLOCKS = "MVLOCKS";
        public const String T_NIO = "NIO";
        public const String T_NOWAIT = "NOWAIT";
        public const String T_NVL = "NVL";
        public const String T_OCTETLENGTH = "OCTETLENGTH";
        public const String T_OFF = "OFF";
        public const String T_OTHER = "OTHER";
        public const String T_PASSWORD = "PASSWORD";
        public const String T_PLAN = "PLAN";
        public const String T_PROPERTY = "PROPERTY";
        public const String T_QUEUE = "QUEUE";
        public const String T_READONLY = "READONLY";
        public const String T_REFERENTIAL = "REFERENTIAL";
        public const String T_RENAME = "RENAME";
        public const String T_RESTRICT = "RESTRICT";
        public const String T_SCRIPT = "SCRIPT";
        public const String T_SCRIPTFORMAT = "SCRIPTFORMAT";
        public const String T_BLOCKING = "BLOCKING";
        public const String T_SHUTDOWN = "SHUTDOWN";
        public const String T_SQL_TSI_DAY = "SQL_TSI_DAY";
        public const String T_SQL_TSI_FRAC_SECOND = "SQL_TSI_FRAC_SECOND";
        public const String T_SQL_TSI_HOUR = "SQL_TSI_HOUR";
        public const String T_SQL_TSI_MINUTE = "SQL_TSI_MINUTE";
        public const String T_SQL_TSI_MONTH = "SQL_TSI_MONTH";
        public const String T_SQL_TSI_QUARTER = "SQL_TSI_QUARTER";
        public const String T_SQL_TSI_SECOND = "SQL_TSI_SECOND";
        public const String T_SQL_TSI_WEEK = "SQL_TSI_WEEK";
        public const String T_SQL_TSI_YEAR = "SQL_TSI_YEAR";
        public const String T_SQL_BIGINT = "SQL_BIGINT";
        public const String T_SQL_BINARY = "SQL_BINARY";
        public const String T_SQL_BIT = "SQL_BIT";
        public const String T_SQL_BLOB = "SQL_BLOB";
        public const String T_SQL_BOOLEAN = "SQL_BOOLEAN";
        public const String T_SQL_CHAR = "SQL_CHAR";
        public const String T_SQL_CLOB = "SQL_CLOB";
        public const String T_SQL_DATE = "SQL_DATE";
        public const String T_SQL_DECIMAL = "SQL_DECIMAL";
        public const String T_SQL_DATALINK = "SQL_DATALINK";
        public const String T_SQL_DOUBLE = "SQL_DOUBLE";
        public const String T_SQL_FLOAT = "SQL_FLOAT";
        public const String T_SQL_INTEGER = "SQL_INTEGER";
        public const String T_SQL_LONGVARBINARY = "SQL_LONGVARBINARY";
        public const String T_SQL_LONGNVARCHAR = "SQL_LONGNVARCHAR";
        public const String T_SQL_LONGVARCHAR = "SQL_LONGVARCHAR";
        public const String T_SQL_NCHAR = "SQL_NCHAR";
        public const String T_SQL_NCLOB = "SQL_NCLOB";
        public const String T_SQL_NUMERIC = "SQL_NUMERIC";
        public const String T_SQL_NVARCHAR = "SQL_NVARCHAR";
        public const String T_SQL_REAL = "SQL_REAL";
        public const String T_SQL_ROWID = "SQL_ROWID";
        public const String T_SQL_SQLXML = "SQL_SQLXML";
        public const String T_SQL_SMALLINT = "SQL_SMALLINT";
        public const String T_SQL_TIME = "SQL_TIME";
        public const String T_SQL_TIMESTAMP = "SQL_TIMESTAMP";
        public const String T_SQL_TINYINT = "SQL_TINYINT";
        public const String T_SQL_VARBINARY = "SQL_VARBINARY";
        public const String T_SQL_VARCHAR = "SQL_VARCHAR";
        public const String T_TEMP = "TEMP";
        public const String T_TEXT = "TEXT";
        public const String T_TIMESTAMPADD = "TIMESTAMPADD";
        public const String T_TIMESTAMPDIFF = "TIMESTAMPDIFF";
        public const String T_TINYINT = "TINYINT";
        public const String T_TO_CHAR = "TO_CHAR";
        public const String T_TODAY = "TODAY";
        public const String T_TOP = "TOP";
        public const String T_VARCHAR_IGNORECASE = "VARCHAR_IGNORECASE";
        public const String T_WRITE_DELAY = "WRITE_DELAY";
        public const String T_YES = "YES";

        //
        public const String T_DAY_NAME = "DAY_NAME";
        public const String T_MONTH_NAME = "MONTH_NAME";
        public const String T_QUARTER = "QUARTER";
        public const String T_DAY_OF_WEEK = "DAY_OF_WEEK";
        public const String T_DAY_OF_MONTH = "DAY_OF_MONTH";
        public const String T_DAY_OF_YEAR = "DAY_OF_YEAR";
        public const String T_WEEK_OF_YEAR = "WEEK_OF_YEAR";
        public const String T_DAYNAME = "DAYNAME";
        public const String T_MONTHNAME = "MONTHNAME";
        public const String T_DAYOFMONTH = "DAYOFMONTH";
        public const String T_DAYOFWEEK = "DAYOFWEEK";
        public const String T_DAYOFYEAR = "DAYOFYEAR";
        public const String T_WEEK = "WEEK";

        //
        public const String T_ACOS = "ACOS";
        public const String T_ASCII = "ASCII";
        public const String T_ASIN = "ASIN";
        public const String T_ATAN = "ATAN";
        public const String T_ATAN2 = "ATAN2";
        public const String T_BITAND = "BITAND";
        public const String T_BITOR = "BITOR";
        public const String T_BITXOR = "BITXOR";
        public const String T_CONCAT_WORD = "CONCAT";
        public const String T_COS = "COS";
        public const String T_COT = "COT";
        public const String T_CRYPT_KEY = "CRYPT_KEY";
        public const String T_DATEADD = "DATEADD";
        public const String T_DATEDIFF = "DATEDIFF";
        public const String T_DEGREES = "DEGREES";
        public const String T_DIFFERENCE = "DIFFERENCE";
        public const String T_DMOD = "DMOD";
        public const String T_GC = "GC";
        public const String T_HEXTORAW = "HEXTORAW";
        public const String T_LCASE = "LCASE";
        public const String T_LOCATE = "LOCATE";
        public const String T_LOG = "LOG";
        public const String T_LOG10 = "LOG10";
        public const String T_LTRIM = "LTRIM";
        public const String T_NOW = "NOW";
        public const String T_PI = "PI";
        public const String T_RADIANS = "RADIANS";
        public const String T_RAND = "RAND";
        public const String T_RAWTOHEX = "RAWTOHEX";
        public const String T_REPLACE = "REPLACE";
        public const String T_REVERSE = "REVERSE";
        public const String T_ROUND = "ROUND";
        public const String T_ROUNDMAGIC = "ROUNDMAGIC";
        public const String T_RTRIM = "RTRIM";
        public const String T_SECONDS_MIDNIGHT = "SECONDS_SINCE_MIDNIGHT";
        public const String T_SIGN = "SIGN";
        public const String T_SIN = "SIN";
        public const String T_SOUNDEX = "SOUNDEX";
        public const String T_SPACE_WORD = "SPACE_WORD";
        public const String T_SUBSTR = "SUBSTR";
        public const String T_SYSDATE = "SYSDATE";
        public const String T_TAN = "TAN";
        public const String T_UCASE = "UCASE";

        //
        //
        //SQL 200n Standard reserved keywords - full set
        public const int ABS = 1;
        public const int ALL = 2;
        public const int ALLOCATE = 3;
        public const int ALTER = 4;
        public const int AND = 5;
        public const int ANY = 6;
        public const int ARE = 7;
        public const int ARRAY = 8;
        public const int AS = 9;
        public const int ASENSITIVE = 10;
        public const int ASYMMETRIC = 11;
        public const int AT = 12;
        public const int ATOMIC = 13;
        public const int AUTHORIZATION = 14;
        public const int AVG = 15;
        public const int BEGIN = 16;
        public const int BETWEEN = 17;
        public const int BIGINT = 18;
        public const int BINARY = 19;
        public const int BLOB = 20;
        public const int BOOLEAN = 21;
        public const int BOTH = 22;
        public const int BY = 23;
        public const int CALL = 24;
        public const int CALLED = 25;
        public const int CARDINALITY = 26;
        public const int CASCADED = 27;
        public const int CASE = 28;
        public const int CAST = 29;
        public const int CEIL = 30;
        public const int CEILING = 31;
        public const int CHAR = 32;
        public const int CHAR_LENGTH = 33;
        public const int CHARACTER = 34;
        public const int CHARACTER_LENGTH = 35;
        public const int CHECK = 36;
        public const int CLOB = 37;
        public const int CLOSE = 38;
        public const int COALESCE = 39;
        public const int COLLATE = 40;
        public const int COLLECT = 41;
        public const int COLUMN = 42;
        public const int COMMIT = 43;
        public const int COMPARABLE = 44;
        public const int CONDITION = 45;
        public const int CONNECT = 46;
        public const int CONSTRAINT = 47;
        public const int CONVERT = 48;
        public const int CORR = 49;
        public const int CORRESPONDING = 50;
        public const int COUNT = 51;
        public const int COVAR_POP = 52;
        public const int COVAR_SAMP = 53;
        public const int CREATE = 54;
        public const int CROSS = 55;
        public const int CUBE = 56;
        public const int CUME_DIST = 57;
        public const int CURRENT = 58;
        public const int CURRENT_CATALOG = 59;
        public const int CURRENT_DATE = 60;
        public const int CURRENT_DEFAULT_TRANSFORM_GROUP = 61;
        public const int CURRENT_PATH = 62;
        public const int CURRENT_ROLE = 63;
        public const int CURRENT_SCHEMA = 64;
        public const int CURRENT_TIME = 65;
        public const int CURRENT_TIMESTAMP = 66;
        public const int CURRENT_TRANSFORM_GROUP_FOR_TYPE = 67;
        public const int CURRENT_USER = 68;
        public const int CURSOR = 69;
        public const int CYCLE = 70;
        public const int DATE = 71;
        public const int DAY = 72;
        public const int DEALLOCATE = 73;
        public const int DEC = 74;
        public const int DECIMAL = 75;
        public const int DECLARE = 76;
        public const int DEFAULT = 77;
        public const int DELETE = 78;
        public const int DENSE_RANK = 79;
        public const int DEREF = 80;
        public const int DESCRIBE = 81;
        public const int DETERMINISTIC = 82;
        public const int DISCONNECT = 83;
        public const int DISTINCT = 84;
        public const int DO = 85;
        public const int DOUBLE = 86;
        public const int DROP = 87;
        public const int DYNAMIC = 88;
        public const int EACH = 89;
        public const int ELEMENT = 90;
        public const int ELSE = 91;
        public const int ELSEIF = 92;
        public const int END = 93;
        public const int END_EXEC = 94;
        public const int ESCAPE = 95;
        public const int EVERY = 96;
        public const int EXCEPT = 97;
        public const int EXEC = 98;
        public const int EXECUTE = 99;
        public const int EXISTS = 100;
        public const int EXIT = 101;
        public const int EXP = 102;
        public const int EXTERNAL = 103;
        public const int EXTRACT = 104;
        public const int FALSE = 105;
        public const int FETCH = 106;
        public const int FILTER = 107;
        public const int FIRST_VALUE = 108;
        public const int FLOAT = 109;
        public const int FLOOR = 110;
        public const int FOR = 111;
        public const int FOREIGN = 112;
        public const int FREE = 113;
        public const int FROM = 114;
        public const int FULL = 115;
        public const int FUNCTION = 116;
        public const int FUSION = 117;
        public const int GET = 118;
        public const int GLOBAL = 119;
        public const int GRANT = 120;
        public const int GROUP = 121;
        public const int GROUPING = 122;
        public const int HANDLER = 123;
        public const int HAVING = 124;
        public const int HOLD = 125;
        public const int HOUR = 126;
        public const int IDENTITY = 127;
        public const int IN = 128;
        public const int INDICATOR = 129;
        public const int INNER = 130;
        public const int INOUT = 131;
        public const int INSENSITIVE = 132;
        public const int INSERT = 133;
        public const int INT = 134;
        public const int INTEGER = 135;
        public const int INTERSECT = 136;
        public const int INTERSECTION = 137;
        public const int INTERVAL = 138;
        public const int INTO = 139;
        public const int IS = 140;
        public const int ITERATE = 141;
        public const int JOIN = 142;
        public const int LAG = 143;
        public const int LANGUAGE = 144;
        public const int LARGE = 145;
        public const int LAST_VALUE = 146;
        public const int LATERAL = 147;
        public const int LEAD = 148;
        public const int LEADING = 149;
        public const int LEAVE = 150;
        public const int LEFT = 151;
        public const int LIKE = 152;
        public const int LIKE_REGEX = 153;
        public const int LN = 154;
        public const int LOCAL = 155;
        public const int LOCALTIME = 156;
        public const int LOCALTIMESTAMP = 157;
        public const int LOOP = 158;
        public const int LOWER = 159;
        public const int MATCH = 160;
        public const int MAX = 161;
        public const int MAX_CARDINALITY = 162;
        public const int MEMBER = 163;
        public const int MERGE = 164;
        public const int METHOD = 165;
        public const int MIN = 166;
        public const int MINUTE = 167;
        public const int MOD = 168;
        public const int MODIFIES = 169;
        public const int MODULE = 170;
        public const int MONTH = 171;
        public const int MULTISET = 172;
        public const int NATIONAL = 173;
        public const int NATURAL = 174;
        public const int NCHAR = 175;
        public const int NCLOB = 176;
        public const int NEW = 177;
        public const int NO = 178;
        public const int NONE = 179;
        public const int NORMALIZE = 180;
        public const int NOT = 181;
        public const int NTH_VALUE = 182;
        public const int NTILE = 183;
        public const int NULL = 184;
        public const int NULLIF = 185;
        public const int NUMERIC = 186;
        public const int OCCURRENCES_REGEX = 187;
        public const int OCTET_LENGTH = 188;
        public const int OF = 189;
        public const int OFFSET = 190;
        public const int OLD = 191;
        public const int ON = 192;
        public const int ONLY = 193;
        public const int OPEN = 194;
        public const int OR = 195;
        public const int ORDER = 196;
        public const int OUT = 197;
        public const int OUTER = 198;
        public const int OVER = 199;
        public const int OVERLAPS = 200;
        public const int OVERLAY = 201;
        public const int PARAMETER = 202;
        public const int PARTITION = 203;
        public const int PERCENT_RANK = 204;
        public const int PERCENTILE_CONT = 205;
        public const int PERCENTILE_DISC = 206;
        public const int POSITION = 207;
        public const int POSITION_REGEX = 208;
        public const int POWER = 209;
        public const int PRECISION = 210;
        public const int PREPARE = 211;
        public const int PRIMARY = 212;
        public const int PROCEDURE = 213;
        public const int RANGE = 214;
        public const int RANK = 215;
        public const int READS = 216;
        public const int REAL = 217;
        public const int RECURSIVE = 218;
        public const int REF = 219;
        public const int REFERENCES = 220;
        public const int REFERENCING = 221;
        public const int REGR_AVGX = 222;
        public const int REGR_AVGY = 223;
        public const int REGR_COUNT = 224;
        public const int REGR_INTERCEPT = 225;
        public const int REGR_R2 = 226;
        public const int REGR_SLOPE = 227;
        public const int REGR_SXX = 228;
        public const int REGR_SXY = 229;
        public const int REGR_SYY = 230;
        public const int RELEASE = 231;
        public const int REPEAT = 232;
        public const int RESIGNAL = 233;
        public const int RESULT = 234;
        public const int RETURN = 235;
        public const int RETURNS = 236;
        public const int REVOKE = 237;
        public const int RIGHT = 238;
        public const int ROLLBACK = 239;
        public const int ROLLUP = 240;
        public const int ROW = 241;
        public const int ROW_NUMBER = 242;
        public const int ROWS = 243;
        public const int SAVEPOINT = 244;
        public const int SCOPE = 245;
        public const int SCROLL = 246;
        public const int SEARCH = 247;
        public const int SECOND = 248;
        public const int SELECT = 249;
        public const int SENSITIVE = 250;
        public const int SESSION_USER = 251;
        public const int SET = 252;
        public const int SIGNAL = 253;
        public const int SIMILAR = 254;
        public const int SMALLINT = 255;
        public const int SOME = 256;
        public const int SPECIFIC = 257;
        public const int SPECIFICTYPE = 258;
        public const int SQL = 259;
        public const int SQLEXCEPTION = 260;
        public const int SQLSTATE = 261;
        public const int SQLWARNING = 262;
        public const int SQRT = 263;
        public const int STACKED = 264;
        public const int START = 265;
        public const int STATIC = 266;
        public const int STDDEV_POP = 267;
        public const int STDDEV_SAMP = 268;
        public const int SUBMULTISET = 269;
        public const int SUBSTRING = 270;
        public const int SUBSTRING_REGEX = 271;
        public const int SUM = 272;
        public const int SYMMETRIC = 273;
        public const int SYSTEM = 274;
        public const int SYSTEM_USER = 275;
        public const int TABLE = 276;
        public const int TABLESAMPLE = 277;
        public const int THEN = 278;
        public const int TIME = 279;
        public const int TIMESTAMP = 280;
        public const int TIMEZONE_HOUR = 281;
        public const int TIMEZONE_MINUTE = 282;
        public const int TO = 283;
        public const int TRAILING = 284;
        public const int TRANSLATE = 285;
        public const int TRANSLATE_REGEX = 286;
        public const int TRANSLATION = 287;
        public const int TREAT = 288;
        public const int TRIGGER = 289;
        public const int TRIM = 290;
        public const int TRIM_ARRAY = 291;
        public const int TRUE = 292;
        public const int TRUNCATE = 293;
        public const int UESCAPE = 294;
        public const int UNDO = 295;
        public const int UNION = 296;
        public const int UNIQUE = 297;
        public const int UNKNOWN = 298;
        public const int UNNEST = 299;
        public const int UNTIL = 300;
        public const int UPDATE = 301;
        public const int UPPER = 302;
        public const int USER = 303;
        public const int USING = 304;
        public const int VALUE = 305;
        public const int VALUES = 306;
        public const int VAR_POP = 307;
        public const int VAR_SAMP = 308;
        public const int VARBINARY = 309;
        public const int VARCHAR = 310;
        public const int VARYING = 311;
        public const int WHEN = 312;
        public const int WHENEVER = 313;
        public const int WHERE = 314;
        public const int WIDTH_BUCKET = 315;
        public const int WINDOW = 316;
        public const int WITH = 317;
        public const int WITHIN = 318;
        public const int WITHOUT = 319;
        public const int WHILE = 320;
        public const int YEAR = 321;

        //SQL 200n Standard non-reserved keywords - full set
        public const int A = 330;
        public const int ABSOLUTE = 331;
        public const int ACTION = 332;
        public const int ADA = 333;
        public const int ADD = 334;
        public const int ADMIN = 335;
        public const int AFTER = 336;
        public const int ALWAYS = 337;
        public const int ASC = 338;
        public const int ASSERTION = 339;
        public const int ASSIGNMENT = 340;
        public const int ATTRIBUTE = 341;
        public const int ATTRIBUTES = 342;
        public const int BEFORE = 343;
        public const int BERNOULLI = 344;
        public const int BREADTH = 345;
        public const int C = 346;
        public const int CASCADE = 347;
        public const int CATALOG = 348;
        public const int CATALOG_NAME = 349;
        public const int CHAIN = 350;
        public const int CHARACTER_SET_CATALOG = 351;
        public const int CHARACTER_SET_NAME = 352;
        public const int CHARACTER_SET_SCHEMA = 353;
        public const int CHARACTERISTICS = 354;
        public const int CHARACTERS = 355;
        public const int CLASS_ORIGIN = 356;
        public const int COBOL = 357;
        public const int COLLATION = 358;
        public const int COLLATION_CATALOG = 359;
        public const int COLLATION_NAME = 360;
        public const int COLLATION_SCHEMA = 361;
        public const int COLUMN_NAME = 362;
        public const int COMMAND_FUNCTION = 363;
        public const int COMMAND_FUNCTION_CODE = 364;
        public const int COMMITTED = 365;
        public const int CONDITION_IDENTIFIER = 366;
        public const int CONDITION_NUMBER = 367;
        public const int CONNECTION = 368;
        public const int CONNECTION_NAME = 369;
        public const int CONSTRAINT_CATALOG = 370;
        public const int CONSTRAINT_NAME = 371;
        public const int CONSTRAINT_SCHEMA = 372;
        public const int CONSTRAINTS = 373;
        public const int CONSTRUCTOR = 374;
        public const int CONTAINS = 375;
        public const int CONTINUE = 376;
        public const int CURSOR_NAME = 377;
        public const int DATA = 378;
        public const int DATETIME_INTERVAL_CODE = 379;
        public const int DATETIME_INTERVAL_PRECISION = 380;
        public const int DEFAULTS = 381;
        public const int DEFERRABLE = 382;
        public const int DEFERRED = 383;
        public const int DEFINED = 384;
        public const int DEFINER = 385;
        public const int DEGREE = 386;
        public const int DEPTH = 387;
        public const int DERIVED = 388;
        public const int DESC = 389;
        public const int DESCRIPTOR = 390;
        public const int DIAGNOSTICS = 391;
        public const int DISPATCH = 392;
        public const int DOMAIN = 393;
        public const int DYNAMIC_FUNCTION = 394;
        public const int DYNAMIC_FUNCTION_CODE = 395;
        public const int EQUALS = 396;
        public const int EXCEPTION = 397;
        public const int EXCLUDE = 398;
        public const int EXCLUDING = 399;
        public const int FINAL = 400;
        public const int FIRST = 401;
        public const int FOLLOWING = 402;
        public const int FORTRAN = 403;
        public const int FOUND = 404;
        public const int G = 405;
        public const int GENERAL = 406;
        public const int GENERATED = 407;
        public const int GO = 408;
        public const int GOTO = 409;
        public const int GRANTED = 410;
        public const int HIERARCHY = 411;
        public const int IF = 412;
        public const int IGNORE = 413;
        public const int IMMEDIATE = 414;
        public const int IMPLEMENTATION = 415;
        public const int INCLUDING = 416;
        public const int INCREMENT = 417;
        public const int INITIALLY = 418;
        public const int INPUT = 419;
        public const int INSTANCE = 420;
        public const int INSTANTIABLE = 421;
        public const int INSTEAD = 422;
        public const int INVOKER = 423;
        public const int ISOLATION = 424;
        public const int JAVA = 425;
        public const int K = 426;
        public const int KEY = 427;
        public const int KEY_MEMBER = 428;
        public const int KEY_TYPE = 429;
        public const int LAST = 430;
        public const int LENGTH = 431;
        public const int LEVEL = 432;
        public const int LOCATOR = 433;
        public const int M = 434;
        public const int MAP = 435;
        public const int MATCHED = 436;
        public const int MAXVALUE = 437;
        public const int MESSAGE_LENGTH = 438;
        public const int MESSAGE_OCTET_LENGTH = 439;
        public const int MESSAGE_TEXT = 440;
        public const int MINVALUE = 441;
        public const int MORE = 442;
        public const int MUMPS = 443;
        public const int NAME = 444;
        public const int NAMES = 445;
        public const int NESTING = 446;
        public const int NEXT = 447;
        public const int NORMALIZED = 448;
        public const int NULLABLE = 449;
        public const int NULLS = 450;
        public const int NUMBER = 451;
        public const int OBJECT = 452;
        public const int OCTETS = 453;
        public const int OPTION = 454;
        public const int OPTIONS = 455;
        public const int ORDERING = 456;
        public const int ORDINALITY = 457;
        public const int OTHERS = 458;
        public const int OUTPUT = 459;
        public const int OVERRIDING = 460;
        public const int P = 461;
        public const int PAD = 462;
        public const int PARAMETER_MODE = 463;
        public const int PARAMETER_NAME = 464;
        public const int PARAMETER_ORDINAL_POSITION = 465;
        public const int PARAMETER_SPECIFIC_CATALOG = 466;
        public const int PARAMETER_SPECIFIC_NAME = 467;
        public const int PARAMETER_SPECIFIC_SCHEMA = 468;
        public const int PARTIAL = 469;
        public const int PASCAL = 470;
        public const int PATH = 471;
        public const int PLACING = 472;
        public const int PLI = 473;
        public const int PRECEDING = 474;
        public const int PRESERVE = 475;
        public const int PRIOR = 476;
        public const int PRIVILEGES = 477;
        public const int PUBLIC = 478;
        public const int READ = 479;
        public const int RELATIVE = 480;
        public const int REPEATABLE = 481;
        public const int RESPECT = 482;
        public const int RESTART = 483;
        public const int RESTRICT = 484;
        public const int RETURNED_CARDINALITY = 485;
        public const int RETURNED_LENGTH = 486;
        public const int RETURNED_OCTET_LENGTH = 487;
        public const int RETURNED_SQLSTATE = 488;
        public const int ROLE = 489;
        public const int ROUTINE = 490;
        public const int ROUTINE_CATALOG = 491;
        public const int ROUTINE_NAME = 492;
        public const int ROUTINE_SCHEMA = 493;
        public const int ROW_COUNT = 494;
        public const int SCALE = 495;
        public const int SCHEMA = 496;
        public const int SCHEMA_NAME = 497;
        public const int SCOPE_CATALOG = 498;
        public const int SCOPE_NAME = 499;
        public const int SCOPE_SCHEMA = 500;
        public const int SECTION = 501;
        public const int SECURITY = 502;
        public const int SELF = 503;
        public const int SEQUENCE = 504;
        public const int SERIALIZABLE = 505;
        public const int SERVER_NAME = 506;
        public const int SESSION = 507;
        public const int SETS = 508;
        public const int SIMPLE = 509;
        public const int SIZE = 510;
        public const int SOURCE = 511;
        public const int SPACE = 512;
        public const int SPECIFIC_NAME = 513;
        public const int STATE = 514;
        public const int STATEMENT = 515;
        public const int STRUCTURE = 516;
        public const int STYLE = 517;
        public const int SUBCLASS_ORIGIN = 518;
        public const int T = 519;
        public const int TABLE_NAME = 520;
        public const int TEMPORARY = 521;
        public const int TIES = 522;
        public const int TOP_LEVEL_COUNT = 523;
        public const int TRANSACTION = 524;
        public const int TRANSACTION_ACTIVE = 525;
        public const int TRANSACTIONS_COMMITTED = 526;
        public const int TRANSACTIONS_ROLLED_BACK = 527;
        public const int TRANSFORM = 528;
        public const int TRANSFORMS = 529;
        public const int TRIGGER_CATALOG = 530;
        public const int TRIGGER_NAME = 531;
        public const int TRIGGER_SCHEMA = 532;
        public const int TYPE = 533;
        public const int UNBOUNDED = 534;
        public const int UNCOMMITTED = 535;
        public const int UNDER = 536;
        public const int UNNAMED = 537;
        public const int USAGE = 538;
        public const int USER_DEFINED_TYPE_CATALOG = 539;
        public const int USER_DEFINED_TYPE_CODE = 540;
        public const int USER_DEFINED_TYPE_NAME = 541;
        public const int USER_DEFINED_TYPE_SCHEMA = 542;
        public const int VIEW = 543;
        public const int WORK = 544;
        public const int WRITE = 545;
        public const int ZONE = 546;

        // other token values used as switch cases
        public const int ALIAS = 551;
        public const int AUTOCOMMIT = 552;
        public const int BACKUP = 553;
        public const int BIT = 554;
        public const int BLOCKING = 555;
        public const int CACHE = 556;
        public const int CACHED = 557;
        public const int CASEWHEN = 558;
        public const int CHECKPOINT = 559;
        public const int CLASS = 560;
        public const int COMPACT = 561;
        public const int COMPRESSED = 562;
        public const int CONTROL = 563;
        public const int DATABASE = 564;
        public const int DEFRAG = 565;
        public const int DELAY = 566;
        public const int EVENT = 567;
        public const int EXPLAIN = 568;
        public const int FILE = 569;
        public const int FILES = 570;
        public const int GC = 571;
        public const int HEADER = 572;
        public const int IGNORECASE = 573;
        public const int IMMEDIATELY = 574;
        public const int INTEGRITY = 575;
        public const int INDEX = 576;
        public const int INITIAL = 577;
        public const int LIMIT = 578;
        public const int LOCK = 579;
        public const int LOCKS = 580;
        public const int MAXROWS = 581;
        public const int MEMORY = 582;
        public const int MILLIS = 583;
        public const int MINUS_EXCEPT = 584;
        public const int OFF = 585;
        public const int PASSWORD = 586;
        public const int PLAN = 587;
        public const int PROPERTY = 588;
        public const int READONLY = 589;
        public const int REFERENTIAL = 590;
        public const int RENAME = 591;
        public const int SCRIPT = 592;
        public const int SCRIPTFORMAT = 593;
        public const int SHUTDOWN = 594;
        public const int TEMP = 595;
        public const int TEXT = 596;
        public const int WRITE_DELAY = 597;

        //
        public const int ACOS = 601;
        public const int ASCII = 602;
        public const int ASIN = 603;
        public const int ATAN = 604;
        public const int ATAN2 = 605;
        public const int BIT_LENGTH = 606;
        public const int BITAND = 607;
        public const int BITLENGTH = 608;
        public const int BITOR = 609;
        public const int BITXOR = 610;
        public const int CONCAT_WORD = 611;
        public const int COS = 612;
        public const int COT = 613;
        public const int CRYPT_KEY = 614;
        public const int CURDATE = 615;
        public const int CURTIME = 616;
        public const int DATEADD = 617;
        public const int DATEDIFF = 618;
        public const int DAY_NAME = 619;
        public const int DAY_OF_MONTH = 620;
        public const int DAY_OF_WEEK = 621;
        public const int DAY_OF_YEAR = 622;
        public const int DAYNAME = 623;
        public const int DAYOFMONTH = 624;
        public const int DAYOFWEEK = 625;
        public const int DAYOFYEAR = 626;
        public const int DEGREES = 627;
        public const int DIFFERENCE = 628;
        public const int DMOD = 629;
        public const int HEXTORAW = 630;
        public const int IFNULL = 631;
        public const int ISAUTOCOMMIT = 632;
        public const int ISREADONLYDATABASE = 633;
        public const int ISREADONLYDATABASEFILES = 634;
        public const int ISREADONLYSESSION = 635;
        public const int LCASE = 636;
        public const int LOCATE = 637;
        public const int LOG = 638;
        public const int LOG10 = 639;
        public const int LTRIM = 640;
        public const int MONTH_NAME = 641;
        public const int MONTHNAME = 642;
        public const int MVCC = 643;
        public const int MVLOCKS = 644;
        public const int NIO = 645;
        public const int NOW = 646;
        public const int OCTETLENGTH = 647;
        public const int PI = 648;
        public const int QUARTER = 649;
        public const int RADIANS = 650;
        public const int RAND = 651;
        public const int RAWTOHEX = 652;
        public const int REPLACE = 653;
        public const int REVERSE = 654;
        public const int ROUND = 655;
        public const int ROUNDMAGIC = 656;
        public const int RTRIM = 657;
        public const int SECONDS_MIDNIGHT = 658;
        public const int SIGN = 659;
        public const int SIN = 660;
        public const int SOUNDEX = 661;
        public const int SPACE_WORD = 662;
        public const int SUBSTR = 663;
        public const int SYSDATE = 664;
        public const int TAN = 665;
        public const int TIMESTAMPADD = 666;
        public const int TIMESTAMPDIFF = 667;
        public const int TO_CHAR = 668;
        public const int TODAY = 669;
        public const int TOP = 670;
        public const int UCASE = 671;
        public const int WEEK = 672;
        public const int WEEK_OF_YEAR = 673;

        //
        public const int ASTERISK = 681;
        public const int CLOSEBRACKET = 682;
        public const int COLON = 683;
        public const int COMMA = 684;
        public const int CONCAT = 685;
        public const int DIVIDE = 686;
        public const int DOUBLE_COLON_OP = 687;
        public const int DOUBLE_PERIOD_OP = 688;
        public const int GREATER = 680;
        public const int GREATER_EQUALS = 690;
        public const int LESS = 691;
        public const int LESS_EQUALS = 692;
        public const int MINUS = 693;
        public const int NOT_EQUALS = 694;
        public const int OPENBRACKET = 695;
        public const int PLUS = 696;
        public const int QUESTION = 697;
        public const int RIGHT_ARROW_OP = 698;
        public const int SEMICOLON = 699;
        public const int ATSYM = 700;
        //
        public const int SQL_BIGINT = 701;
        public const int SQL_BINARY = 702;
        public const int SQL_BIT = 703;
        public const int SQL_BLOB = 704;
        public const int SQL_BOOLEAN = 705;
        public const int SQL_CHAR = 706;
        public const int SQL_CLOB = 707;
        public const int SQL_DATE = 708;
        public const int SQL_DECIMAL = 709;
        public const int SQL_DATALINK = 710;
        public const int SQL_DOUBLE = 711;
        public const int SQL_FLOAT = 712;
        public const int SQL_INTEGER = 713;
        public const int SQL_LONGVARBINARY = 714;
        public const int SQL_LONGNVARCHAR = 715;
        public const int SQL_LONGVARCHAR = 716;
        public const int SQL_NCHAR = 717;
        public const int SQL_NCLOB = 718;
        public const int SQL_NUMERIC = 719;
        public const int SQL_NVARCHAR = 720;
        public const int SQL_REAL = 721;
        public const int SQL_ROWID = 722;
        public const int SQL_SQLXML = 723;
        public const int SQL_SMALLINT = 724;
        public const int SQL_TIME = 725;
        public const int SQL_TIMESTAMP = 726;
        public const int SQL_TINYINT = 727;
        public const int SQL_VARBINARY = 728;
        public const int SQL_VARCHAR = 729;

        //
        public const int SQL_TSI_FRAC_SECOND = 731;
        public const int SQL_TSI_SECOND = 732;
        public const int SQL_TSI_MINUTE = 733;
        public const int SQL_TSI_HOUR = 734;
        public const int SQL_TSI_DAY = 735;
        public const int SQL_TSI_WEEK = 736;
        public const int SQL_TSI_MONTH = 737;
        public const int SQL_TSI_QUARTER = 738;
        public const int SQL_TSI_YEAR = 739;

        //
        public const int X_KEYSET = 741;
        public const int X_OPTION = 742;
        public const int X_REPEAT = 743;
        public const int X_POS_INTEGER = 744;

        //
        public const int X_VALUE = 745;
        public const int X_IDENTIFIER = 746;
        public const int X_DELIMITED_IDENTIFIER = 747;
        public const int X_ENDPARSE = 748;
        public const int X_STARTPARSE = 749;
        public const int X_REMARK = 750;
        public const int X_NULL = 751;
        public const int X_LOB_SIZE = 752;
        public const int X_MALFORMED_STRING = 753;
        public const int X_MALFORMED_NUMERIC = 754;
        public const int X_MALFORMED_BIT_STRING = 755;
        public const int X_MALFORMED_BINARY_STRING = 756;
        public const int X_MALFORMED_UNICODE_STRING = 757;
        public const int X_MALFORMED_COMMENT = 758;
        public const int X_MALFORMED_IDENTIFIER = 759;
        public const int X_MALFORMED_UNICODE_ESCAPE = 760;

        //
        public const int X_UNKNOWN_TOKEN = -1;
        private static IntValueHashMap reservedKeys =
        new IntValueHashMap(351);

        public static List<string> GetReservedWords()
        {
            List<string> reservedWords = new List<string>();
            Iterator iterator = reservedKeys.keySet().iterator();
            while (iterator.hasNext())
            {
                string reservedWord =(string) iterator.next();
                reservedWords.Add(reservedWord);
            }

            return reservedWords;
        }

        private static IntValueHashMap commandSet = new IntValueHashMap(251);


        static Tokens()
        {
            reservedKeys.put(Tokens.T_ABS, ABS);
            reservedKeys.put(Tokens.T_ALL, ALL);
            reservedKeys.put(Tokens.T_ALLOCATE, ALLOCATE);
            reservedKeys.put(Tokens.T_ALTER, ALTER);
            reservedKeys.put(Tokens.T_AND, AND);
            reservedKeys.put(Tokens.T_ANY, ANY);
            reservedKeys.put(Tokens.T_ARE, ARE);
            reservedKeys.put(Tokens.T_ARRAY, ARRAY);
            reservedKeys.put(Tokens.T_AS, AS);
            reservedKeys.put(Tokens.T_ASENSITIVE, ASENSITIVE);
            reservedKeys.put(Tokens.T_ASYMMETRIC, ASYMMETRIC);
            reservedKeys.put(Tokens.T_AT, AT);
            reservedKeys.put(Tokens.T_ATOMIC, ATOMIC);
            reservedKeys.put(Tokens.T_AUTHORIZATION, AUTHORIZATION);
            reservedKeys.put(Tokens.T_AVG, AVG);
            reservedKeys.put(Tokens.T_BEGIN, BEGIN);
            reservedKeys.put(Tokens.T_BETWEEN, BETWEEN);
            reservedKeys.put(Tokens.T_BIGINT, BIGINT);
            reservedKeys.put(Tokens.T_BINARY, BINARY);
            reservedKeys.put(Tokens.T_BIT_LENGTH, BIT_LENGTH);
            reservedKeys.put(Tokens.T_BLOB, BLOB);
            reservedKeys.put(Tokens.T_BOOLEAN, BOOLEAN);
            reservedKeys.put(Tokens.T_BOTH, BOTH);
            reservedKeys.put(Tokens.T_BY, BY);
            reservedKeys.put(Tokens.T_CALL, CALL);
            reservedKeys.put(Tokens.T_CALLED, CALLED);
            reservedKeys.put(Tokens.T_CARDINALITY, CARDINALITY);
            reservedKeys.put(Tokens.T_CASCADED, CASCADED);
            reservedKeys.put(Tokens.T_CASE, CASE);
            reservedKeys.put(Tokens.T_CAST, CAST);
            reservedKeys.put(Tokens.T_CEIL, CEIL);
            reservedKeys.put(Tokens.T_CEILING, CEILING);
            reservedKeys.put(Tokens.T_CHAR, CHAR);
            reservedKeys.put(Tokens.T_CHAR_LENGTH, CHAR_LENGTH);
            reservedKeys.put(Tokens.T_CHARACTER, CHARACTER);
            reservedKeys.put(Tokens.T_CHARACTER_LENGTH, CHARACTER_LENGTH);
            reservedKeys.put(Tokens.T_CHECK, CHECK);
            reservedKeys.put(Tokens.T_CLOB, CLOB);
            reservedKeys.put(Tokens.T_CLOSE, CLOSE);
            reservedKeys.put(Tokens.T_COALESCE, COALESCE);
            reservedKeys.put(Tokens.T_COLLATE, COLLATE);
            reservedKeys.put(Tokens.T_COLLECT, COLLECT);
            reservedKeys.put(Tokens.T_COLUMN, COLUMN);
            reservedKeys.put(Tokens.T_COMMIT, COMMIT);
            reservedKeys.put(Tokens.T_COMPARABLE, COMPARABLE);
            reservedKeys.put(Tokens.T_CONDITION, CONDITION);
            reservedKeys.put(Tokens.T_CONNECT, CONNECT);
            reservedKeys.put(Tokens.T_CONSTRAINT, CONSTRAINT);
            reservedKeys.put(Tokens.T_CONVERT, CONVERT);
            reservedKeys.put(Tokens.T_CORR, CORR);
            reservedKeys.put(Tokens.T_CORRESPONDING, CORRESPONDING);
            reservedKeys.put(Tokens.T_COUNT, COUNT);
            reservedKeys.put(Tokens.T_COVAR_POP, COVAR_POP);
            reservedKeys.put(Tokens.T_COVAR_SAMP, COVAR_SAMP);
            reservedKeys.put(Tokens.T_CREATE, CREATE);
            reservedKeys.put(Tokens.T_CROSS, CROSS);
            reservedKeys.put(Tokens.T_CUBE, CUBE);
            reservedKeys.put(Tokens.T_CUME_DIST, CUME_DIST);
            reservedKeys.put(Tokens.T_CURRENT, CURRENT);
            reservedKeys.put(Tokens.T_CURRENT_CATALOG, CURRENT_CATALOG);
            reservedKeys.put(Tokens.T_CURRENT_DATE, CURRENT_DATE);
            reservedKeys.put(Tokens.T_CURRENT_DEFAULT_TRANSFORM_GROUP,
                             CURRENT_DEFAULT_TRANSFORM_GROUP);
            reservedKeys.put(Tokens.T_CURRENT_PATH, CURRENT_PATH);
            reservedKeys.put(Tokens.T_CURRENT_ROLE, CURRENT_ROLE);
            reservedKeys.put(Tokens.T_CURRENT_SCHEMA, CURRENT_SCHEMA);
            reservedKeys.put(Tokens.T_CURRENT_TIME, CURRENT_TIME);
            reservedKeys.put(Tokens.T_CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
            reservedKeys.put(Tokens.T_DO, DO);
            reservedKeys.put(Tokens.T_CURRENT_TRANSFORM_GROUP_FOR_TYPE,
                             CURRENT_TRANSFORM_GROUP_FOR_TYPE);
            reservedKeys.put(Tokens.T_CURRENT_USER, CURRENT_USER);
            reservedKeys.put(Tokens.T_CURSOR, CURSOR);
            reservedKeys.put(Tokens.T_CYCLE, CYCLE);
            reservedKeys.put(Tokens.T_DATE, DATE);
            reservedKeys.put(Tokens.T_DAY, DAY);
            reservedKeys.put(Tokens.T_DEALLOCATE, DEALLOCATE);
            reservedKeys.put(Tokens.T_DEC, DEC);
            reservedKeys.put(Tokens.T_DECIMAL, DECIMAL);
            reservedKeys.put(Tokens.T_DECLARE, DECLARE);
            reservedKeys.put(Tokens.T_DEFAULT, DEFAULT);
            reservedKeys.put(Tokens.T_DELETE, DELETE);
            reservedKeys.put(Tokens.T_DENSE_RANK, DENSE_RANK);
            reservedKeys.put(Tokens.T_DEREF, DEREF);
            reservedKeys.put(Tokens.T_DESCRIBE, DESCRIBE);
            reservedKeys.put(Tokens.T_DETERMINISTIC, DETERMINISTIC);
            reservedKeys.put(Tokens.T_DISCONNECT, DISCONNECT);
            reservedKeys.put(Tokens.T_DISTINCT, DISTINCT);
            reservedKeys.put(Tokens.T_DOUBLE, DOUBLE);
            reservedKeys.put(Tokens.T_DROP, DROP);
            reservedKeys.put(Tokens.T_DYNAMIC, DYNAMIC);
            reservedKeys.put(Tokens.T_EACH, EACH);
            reservedKeys.put(Tokens.T_ELEMENT, ELEMENT);
            reservedKeys.put(Tokens.T_ELSE, ELSE);
            reservedKeys.put(Tokens.T_ELSEIF, ELSEIF);
            reservedKeys.put(Tokens.T_END, END);
            reservedKeys.put(Tokens.T_END_EXEC, END_EXEC);
            reservedKeys.put(Tokens.T_ESCAPE, ESCAPE);
            reservedKeys.put(Tokens.T_EVERY, EVERY);
            reservedKeys.put(Tokens.T_EXCEPT, EXCEPT);
            reservedKeys.put(Tokens.T_EXEC, EXEC);
            reservedKeys.put(Tokens.T_EXECUTE, EXECUTE);
            reservedKeys.put(Tokens.T_EXISTS, EXISTS);
            reservedKeys.put(Tokens.T_EXIT, EXIT);
            reservedKeys.put(Tokens.T_EXP, EXP);
            reservedKeys.put(Tokens.T_EXTERNAL, EXTERNAL);
            reservedKeys.put(Tokens.T_EXTRACT, EXTRACT);
            reservedKeys.put(Tokens.T_FALSE, FALSE);
            reservedKeys.put(Tokens.T_FETCH, FETCH);
            reservedKeys.put(Tokens.T_FILTER, FILTER);
            reservedKeys.put(Tokens.T_FIRST_VALUE, FIRST_VALUE);
            reservedKeys.put(Tokens.T_FLOAT, FLOAT);
            reservedKeys.put(Tokens.T_FLOOR, FLOOR);
            reservedKeys.put(Tokens.T_FOR, FOR);
            reservedKeys.put(Tokens.T_FOREIGN, FOREIGN);
            reservedKeys.put(Tokens.T_FREE, FREE);
            reservedKeys.put(Tokens.T_FROM, FROM);
            reservedKeys.put(Tokens.T_FULL, FULL);
            reservedKeys.put(Tokens.T_FUNCTION, FUNCTION);
            reservedKeys.put(Tokens.T_FUSION, FUSION);
            reservedKeys.put(Tokens.T_GET, GET);
            reservedKeys.put(Tokens.T_GLOBAL, GLOBAL);
            reservedKeys.put(Tokens.T_GRANT, GRANT);
            reservedKeys.put(Tokens.T_GROUP, GROUP);
            reservedKeys.put(Tokens.T_GROUPING, GROUPING);
            reservedKeys.put(Tokens.T_HANDLER, HANDLER);
            reservedKeys.put(Tokens.T_HAVING, HAVING);
            reservedKeys.put(Tokens.T_HOLD, HOLD);
            reservedKeys.put(Tokens.T_HOUR, HOUR);
            reservedKeys.put(Tokens.T_IDENTITY, IDENTITY);
            reservedKeys.put(Tokens.T_IF, IF);
            reservedKeys.put(Tokens.T_IN, IN);
            reservedKeys.put(Tokens.T_INDICATOR, INDICATOR);
            reservedKeys.put(Tokens.T_INNER, INNER);
            reservedKeys.put(Tokens.T_INOUT, INOUT);
            reservedKeys.put(Tokens.T_INSENSITIVE, INSENSITIVE);
            reservedKeys.put(Tokens.T_INSERT, INSERT);
            reservedKeys.put(Tokens.T_INT, INT);
            reservedKeys.put(Tokens.T_INTEGER, INTEGER);
            reservedKeys.put(Tokens.T_INTERSECT, INTERSECT);
            reservedKeys.put(Tokens.T_INTERSECTION, INTERSECTION);
            reservedKeys.put(Tokens.T_INTERVAL, INTERVAL);
            reservedKeys.put(Tokens.T_INTO, INTO);
            reservedKeys.put(Tokens.T_IS, IS);
            reservedKeys.put(Tokens.T_ITERATE, ITERATE);
            reservedKeys.put(Tokens.T_JOIN, JOIN);
            reservedKeys.put(Tokens.T_LAG, LAG);
            reservedKeys.put(Tokens.T_LANGUAGE, LANGUAGE);
            reservedKeys.put(Tokens.T_LARGE, LARGE);
            reservedKeys.put(Tokens.T_LAST_VALUE, LAST_VALUE);
            reservedKeys.put(Tokens.T_LATERAL, LATERAL);
            reservedKeys.put(Tokens.T_LEAD, LEAD);
            reservedKeys.put(Tokens.T_LEADING, LEADING);
            reservedKeys.put(Tokens.T_LEAVE, LEAVE);
            reservedKeys.put(Tokens.T_LEFT, LEFT);
            reservedKeys.put(Tokens.T_LIKE, LIKE);
            reservedKeys.put(Tokens.T_LIKE_REGX, LIKE_REGEX);
            reservedKeys.put(Tokens.T_LN, LN);
            reservedKeys.put(Tokens.T_LOCAL, LOCAL);
            reservedKeys.put(Tokens.T_LOCALTIME, LOCALTIME);
            reservedKeys.put(Tokens.T_LOCALTIMESTAMP, LOCALTIMESTAMP);
            reservedKeys.put(Tokens.T_LOOP, LOOP);
            reservedKeys.put(Tokens.T_LOWER, LOWER);
            reservedKeys.put(Tokens.T_MATCH, MATCH);
            reservedKeys.put(Tokens.T_MAX, MAX);
            reservedKeys.put(Tokens.T_MAX_CARDINALITY, MAX_CARDINALITY);
            reservedKeys.put(Tokens.T_MEMBER, MEMBER);
            reservedKeys.put(Tokens.T_MERGE, MERGE);
            reservedKeys.put(Tokens.T_METHOD, METHOD);
            reservedKeys.put(Tokens.T_MIN, MIN);
            reservedKeys.put(Tokens.T_MINUTE, MINUTE);
            reservedKeys.put(Tokens.T_MOD, MOD);
            reservedKeys.put(Tokens.T_MODIFIES, MODIFIES);
            reservedKeys.put(Tokens.T_MODULE, MODULE);
            reservedKeys.put(Tokens.T_MONTH, MONTH);
            reservedKeys.put(Tokens.T_MULTISET, MULTISET);
            reservedKeys.put(Tokens.T_NATIONAL, NATIONAL);
            reservedKeys.put(Tokens.T_NATURAL, NATURAL);
            reservedKeys.put(Tokens.T_NCHAR, NCHAR);
            reservedKeys.put(Tokens.T_NCLOB, NCLOB);
            reservedKeys.put(Tokens.T_NEW, NEW);
            reservedKeys.put(Tokens.T_NO, NO);
            reservedKeys.put(Tokens.T_NONE, NONE);
            reservedKeys.put(Tokens.T_NORMALIZE, NORMALIZE);
            reservedKeys.put(Tokens.T_NOT, NOT);
            reservedKeys.put(Tokens.T_NTH_VALUE, NTH_VALUE);
            reservedKeys.put(Tokens.T_NTILE, NTILE);
            reservedKeys.put(Tokens.T_NULL, NULL);
            reservedKeys.put(Tokens.T_NULLIF, NULLIF);
            reservedKeys.put(Tokens.T_NUMERIC, NUMERIC);
            reservedKeys.put(Tokens.T_OCCURRENCES_REGEX, OCCURRENCES_REGEX);
            reservedKeys.put(Tokens.T_OCTET_LENGTH, OCTET_LENGTH);
            reservedKeys.put(Tokens.T_OF, OF);
            reservedKeys.put(Tokens.T_OFFSET, OFFSET);
            reservedKeys.put(Tokens.T_OLD, OLD);
            reservedKeys.put(Tokens.T_ON, ON);
            reservedKeys.put(Tokens.T_ONLY, ONLY);
            reservedKeys.put(Tokens.T_OPEN, OPEN);
            reservedKeys.put(Tokens.T_OR, OR);
            reservedKeys.put(Tokens.T_ORDER, ORDER);
            reservedKeys.put(Tokens.T_OUT, OUT);
            reservedKeys.put(Tokens.T_OUTER, OUTER);
            reservedKeys.put(Tokens.T_OVER, OVER);
            reservedKeys.put(Tokens.T_OVERLAPS, OVERLAPS);
            reservedKeys.put(Tokens.T_OVERLAY, OVERLAY);
            reservedKeys.put(Tokens.T_PARAMETER, PARAMETER);
            reservedKeys.put(Tokens.T_PARTITION, PARTITION);
            reservedKeys.put(Tokens.T_PERCENT_RANK, PERCENT_RANK);
            reservedKeys.put(Tokens.T_PERCENTILE_CONT, PERCENTILE_CONT);
            reservedKeys.put(Tokens.T_PERCENTILE_DISC, PERCENTILE_DISC);
            reservedKeys.put(Tokens.T_POSITION, POSITION);
            reservedKeys.put(Tokens.T_POSITION_REGEX, POSITION_REGEX);
            reservedKeys.put(Tokens.T_POWER, POWER);
            reservedKeys.put(Tokens.T_PRECISION, PRECISION);
            reservedKeys.put(Tokens.T_PREPARE, PREPARE);
            reservedKeys.put(Tokens.T_PRIMARY, PRIMARY);
            reservedKeys.put(Tokens.T_PROCEDURE, PROCEDURE);
            reservedKeys.put(Tokens.T_RANGE, RANGE);
            reservedKeys.put(Tokens.T_RANK, RANK);
            reservedKeys.put(Tokens.T_READS, READS);
            reservedKeys.put(Tokens.T_REAL, REAL);
            reservedKeys.put(Tokens.T_RECURSIVE, RECURSIVE);
            reservedKeys.put(Tokens.T_REF, REF);
            reservedKeys.put(Tokens.T_REFERENCES, REFERENCES);
            reservedKeys.put(Tokens.T_REFERENCING, REFERENCING);
            reservedKeys.put(Tokens.T_REGR_AVGX, REGR_AVGX);
            reservedKeys.put(Tokens.T_REGR_AVGY, REGR_AVGY);
            reservedKeys.put(Tokens.T_REGR_COUNT, REGR_COUNT);
            reservedKeys.put(Tokens.T_REGR_INTERCEPT, REGR_INTERCEPT);
            reservedKeys.put(Tokens.T_REGR_R2, REGR_R2);
            reservedKeys.put(Tokens.T_REGR_SLOPE, REGR_SLOPE);
            reservedKeys.put(Tokens.T_REGR_SXX, REGR_SXX);
            reservedKeys.put(Tokens.T_REGR_SXY, REGR_SXY);
            reservedKeys.put(Tokens.T_REGR_SYY, REGR_SYY);
            reservedKeys.put(Tokens.T_RELEASE, RELEASE);
            reservedKeys.put(Tokens.T_REPEAT, REPEAT);
            reservedKeys.put(Tokens.T_RESIGNAL, RESIGNAL);
            reservedKeys.put(Tokens.T_RETURN, RETURN);
            reservedKeys.put(Tokens.T_RETURNS, RETURNS);
            reservedKeys.put(Tokens.T_REVOKE, REVOKE);
            reservedKeys.put(Tokens.T_RIGHT, RIGHT);
            reservedKeys.put(Tokens.T_ROLLBACK, ROLLBACK);
            reservedKeys.put(Tokens.T_ROLLUP, ROLLUP);
            reservedKeys.put(Tokens.T_ROW, ROW);
            reservedKeys.put(Tokens.T_ROW_NUMBER, ROW_NUMBER);
            reservedKeys.put(Tokens.T_ROWS, ROWS);
            reservedKeys.put(Tokens.T_SAVEPOINT, SAVEPOINT);
            reservedKeys.put(Tokens.T_SCOPE, SCOPE);
            reservedKeys.put(Tokens.T_SCROLL, SCROLL);
            reservedKeys.put(Tokens.T_SEARCH, SEARCH);
            reservedKeys.put(Tokens.T_SECOND, SECOND);
            reservedKeys.put(Tokens.T_SELECT, SELECT);
            reservedKeys.put(Tokens.T_SENSITIVE, SENSITIVE);
            reservedKeys.put(Tokens.T_SESSION_USER, SESSION_USER);
            reservedKeys.put(Tokens.T_SET, SET);
            reservedKeys.put(Tokens.T_SIGNAL, SIGNAL);
            reservedKeys.put(Tokens.T_SIMILAR, SIMILAR);
            reservedKeys.put(Tokens.T_SMALLINT, SMALLINT);
            reservedKeys.put(Tokens.T_SOME, SOME);
            reservedKeys.put(Tokens.T_SPECIFIC, SPECIFIC);
            reservedKeys.put(Tokens.T_SPECIFICTYPE, SPECIFICTYPE);
            reservedKeys.put(Tokens.T_SQL, SQL);
            reservedKeys.put(Tokens.T_SQLEXCEPTION, SQLEXCEPTION);
            reservedKeys.put(Tokens.T_SQLSTATE, SQLSTATE);
            reservedKeys.put(Tokens.T_SQLWARNING, SQLWARNING);
            reservedKeys.put(Tokens.T_SQRT, SQRT);
            reservedKeys.put(Tokens.T_STACKED, STACKED);
            reservedKeys.put(Tokens.T_START, START);
            reservedKeys.put(Tokens.T_STATIC, STATIC);
            reservedKeys.put(Tokens.T_STDDEV_POP, STDDEV_POP);
            reservedKeys.put(Tokens.T_STDDEV_SAMP, STDDEV_SAMP);
            reservedKeys.put(Tokens.T_SUBMULTISET, SUBMULTISET);
            reservedKeys.put(Tokens.T_SUBSTRING, SUBSTRING);
            reservedKeys.put(Tokens.T_SUBSTRING_REGEX, SUBSTRING_REGEX);
            reservedKeys.put(Tokens.T_SUM, SUM);
            reservedKeys.put(Tokens.T_SYMMETRIC, SYMMETRIC);
            reservedKeys.put(Tokens.T_SYSTEM, SYSTEM);
            reservedKeys.put(Tokens.T_SYSTEM_USER, SYSTEM_USER);
            reservedKeys.put(Tokens.T_TABLE, TABLE);
            reservedKeys.put(Tokens.T_TABLESAMPLE, TABLESAMPLE);
            reservedKeys.put(Tokens.T_THEN, THEN);
            reservedKeys.put(Tokens.T_TIME, TIME);
            reservedKeys.put(Tokens.T_TIMESTAMP, TIMESTAMP);
            reservedKeys.put(Tokens.T_TIMEZONE_HOUR, TIMEZONE_HOUR);
            reservedKeys.put(Tokens.T_TIMEZONE_MINUTE, TIMEZONE_MINUTE);
            reservedKeys.put(Tokens.T_TO, TO);
            reservedKeys.put(Tokens.T_TRAILING, TRAILING);
            reservedKeys.put(Tokens.T_TRANSLATE, TRANSLATE);
            reservedKeys.put(Tokens.T_TRANSLATE_REGEX, TRANSLATE_REGEX);
            reservedKeys.put(Tokens.T_TRANSLATION, TRANSLATION);
            reservedKeys.put(Tokens.T_TREAT, TREAT);
            reservedKeys.put(Tokens.T_TRIGGER, TRIGGER);
            reservedKeys.put(Tokens.T_TRIM, TRIM);
            reservedKeys.put(Tokens.T_TRIM_ARRAY, TRIM_ARRAY);
            reservedKeys.put(Tokens.T_TRUE, TRUE);
            reservedKeys.put(Tokens.T_TRUNCATE, TRUNCATE);
            reservedKeys.put(Tokens.T_UESCAPE, UESCAPE);
            reservedKeys.put(Tokens.T_UNDO, UNDO);
            reservedKeys.put(Tokens.T_UNION, UNION);
            reservedKeys.put(Tokens.T_UNIQUE, UNIQUE);
            reservedKeys.put(Tokens.T_UNKNOWN, UNKNOWN);
            reservedKeys.put(Tokens.T_UNNEST, UNNEST);
            reservedKeys.put(Tokens.T_UNTIL, UNTIL);
            reservedKeys.put(Tokens.T_UPDATE, UPDATE);
            reservedKeys.put(Tokens.T_UPPER, UPPER);
            reservedKeys.put(Tokens.T_USER, USER);
            reservedKeys.put(Tokens.T_USING, USING);
            reservedKeys.put(Tokens.T_VALUE, VALUE);
            reservedKeys.put(Tokens.T_VALUES, VALUES);
            reservedKeys.put(Tokens.T_VAR_POP, VAR_POP);
            reservedKeys.put(Tokens.T_VAR_SAMP, VAR_SAMP);
            reservedKeys.put(Tokens.T_VARBINARY, VARBINARY);
            reservedKeys.put(Tokens.T_VARCHAR, VARCHAR);
            reservedKeys.put(Tokens.T_VARYING, VARYING);
            reservedKeys.put(Tokens.T_WHEN, WHEN);
            reservedKeys.put(Tokens.T_WHENEVER, WHENEVER);
            reservedKeys.put(Tokens.T_WHERE, WHERE);
            reservedKeys.put(Tokens.T_WIDTH_BUCKET, WIDTH_BUCKET);
            reservedKeys.put(Tokens.T_WINDOW, WINDOW);
            reservedKeys.put(Tokens.T_WITH, WITH);
            reservedKeys.put(Tokens.T_WITHIN, WITHIN);
            reservedKeys.put(Tokens.T_WITHOUT, WITHOUT);
            reservedKeys.put(Tokens.T_WHILE, WHILE);
            reservedKeys.put(Tokens.T_YEAR, YEAR);

            commandSet.put(T_ACTION, ACTION);
            commandSet.put(T_ADD, ADD);
            commandSet.put(T_ADMIN, ADMIN);
            commandSet.put(T_AFTER, AFTER);
            commandSet.put(T_ALIAS, ALIAS);
            commandSet.put(T_ALWAYS, ALWAYS);
            commandSet.put(T_ASC, ASC);
            commandSet.put(T_AUTOCOMMIT, AUTOCOMMIT);
            commandSet.put(T_BACKUP, BACKUP);
            commandSet.put(T_BEFORE, BEFORE);
            commandSet.put(T_BIT, BIT);
            commandSet.put(T_BLOCKING, BLOCKING);
            commandSet.put(T_CACHE, CACHE);
            commandSet.put(T_CACHED, CACHED);
            commandSet.put(T_CASCADE, CASCADE);
            commandSet.put(T_CATALOG, CATALOG);
            commandSet.put(T_CHARACTERISTICS, CHARACTERISTICS);
            commandSet.put(T_CHECKPOINT, CHECKPOINT);
            commandSet.put(T_CRYPT_KEY, CRYPT_KEY);
            commandSet.put(T_CLASS, CLASS);
            commandSet.put(T_COLLATE, COLLATE);
            commandSet.put(T_COLLATION, COLLATION);
            commandSet.put(T_COMMITTED, COMMITTED);
            commandSet.put(T_COMPACT, COMPACT);
            commandSet.put(T_COMPRESSED, COMPRESSED);
            commandSet.put(T_CONDITION_IDENTIFIER, Tokens.CONDITION_IDENTIFIER);
            commandSet.put(T_CONTAINS, CONTAINS);
            commandSet.put(T_CONTINUE, CONTINUE);
            commandSet.put(T_CONTROL, CONTROL);
            commandSet.put(T_CURDATE, CURDATE);
            commandSet.put(T_CURTIME, CURTIME);
            commandSet.put(T_DATA, DATA);
            commandSet.put(T_DATABASE, DATABASE);
            commandSet.put(T_DEFAULTS, DEFAULTS);
            commandSet.put(T_DEFRAG, DEFRAG);
            commandSet.put(T_DELAY, DELAY);
            commandSet.put(T_DESC, DESC);
            commandSet.put(T_DOMAIN, DOMAIN);
            commandSet.put(T_EVENT, EVENT);
            commandSet.put(T_EXCLUDING, EXCLUDING);
            commandSet.put(T_EXPLAIN, EXPLAIN);
            commandSet.put(T_FILE, FILE);
            commandSet.put(T_FILES, FILES);
            commandSet.put(T_FINAL, FINAL);
            commandSet.put(T_FIRST, FIRST);
            commandSet.put(T_G_FACTOR, G);
            commandSet.put(T_GC, GC);
            commandSet.put(T_GENERATED, GENERATED);
            commandSet.put(T_GRANTED, GRANTED);
            commandSet.put(T_HEADER, HEADER);
            commandSet.put(T_IF, Tokens.IF);
            commandSet.put(T_IGNORECASE, IGNORECASE);
            commandSet.put(T_IMMEDIATELY, IMMEDIATELY);
            commandSet.put(T_INCLUDING, INCLUDING);
            commandSet.put(T_INCREMENT, INCREMENT);
            commandSet.put(T_INDEX, INDEX);
            commandSet.put(T_INITIAL, INITIAL);
            commandSet.put(T_INPUT, INPUT);
            commandSet.put(T_INSTEAD, INSTEAD);
            commandSet.put(T_INTEGRITY, INTEGRITY);
            commandSet.put(T_ISAUTOCOMMIT, ISAUTOCOMMIT);
            commandSet.put(T_ISOLATION, ISOLATION);
            commandSet.put(T_ISREADONLYDATABASE, ISREADONLYDATABASE);
            commandSet.put(T_ISREADONLYDATABASEFILES, ISREADONLYDATABASEFILES);
            commandSet.put(T_ISREADONLYSESSION, ISREADONLYSESSION);
            commandSet.put(T_JAVA, JAVA);
            commandSet.put(T_K_FACTOR, K);
            commandSet.put(T_KEY, KEY);
            commandSet.put(T_LAST, LAST);
            commandSet.put(T_LENGTH, LENGTH);
            commandSet.put(T_LEVEL, LEVEL);
            commandSet.put(T_LIMIT, LIMIT);
            commandSet.put(T_LOCK, LOCK);
            commandSet.put(T_LOCKS, LOCKS);
            commandSet.put(T_M_FACTOR, M);
            commandSet.put(T_MATCHED, MATCHED);
            commandSet.put(T_MAXROWS, MAXROWS);
            commandSet.put(T_MAXVALUE, MAXVALUE);
            commandSet.put(T_MEMORY, MEMORY);
            commandSet.put(T_MILLIS, MILLIS);
            commandSet.put(T_MINUS_EXCEPT, MINUS_EXCEPT);
            commandSet.put(T_MINVALUE, MINVALUE);
            commandSet.put(T_MVCC, MVCC);
            commandSet.put(T_MVLOCKS, MVLOCKS);
            commandSet.put(T_NAME, NAME);
            commandSet.put(T_NEXT, NEXT);
            commandSet.put(T_NIO, NIO);
            commandSet.put(T_NOW, NOW);
            commandSet.put(T_NULLS, NULLS);
            commandSet.put(T_OFF, OFF);
            commandSet.put(T_OPTION, OPTION);
            commandSet.put(T_OVERRIDING, OVERRIDING);
            commandSet.put(T_P_FACTOR, P);
            commandSet.put(T_PARTIAL, PARTIAL);
            commandSet.put(T_PASSWORD, PASSWORD);
            commandSet.put(T_PLACING, PLACING);
            commandSet.put(T_PLAN, PLAN);
            commandSet.put(T_PRESERVE, PRESERVE);
            commandSet.put(T_PRIVILEGES, PRIVILEGES);
            commandSet.put(T_PROPERTY, PROPERTY);
            commandSet.put(T_READ, READ);
            commandSet.put(T_READONLY, READONLY);
            commandSet.put(T_REFERENTIAL, REFERENTIAL);
            commandSet.put(T_RENAME, RENAME);
            commandSet.put(T_REPEATABLE, REPEATABLE);
            commandSet.put(T_RESTART, RESTART);
            commandSet.put(T_RESTRICT, RESTRICT);
            commandSet.put(T_RESULT, RESULT);
            commandSet.put(T_ROLE, ROLE);
            commandSet.put(T_ROUTINE, ROUTINE);
            commandSet.put(T_SCALE, SCALE);
            commandSet.put(T_SCHEMA, SCHEMA);
            commandSet.put(T_SCRIPT, SCRIPT);
            commandSet.put(T_SCRIPTFORMAT, SCRIPTFORMAT);
            commandSet.put(T_SEQUENCE, SEQUENCE);
            commandSet.put(T_SERIALIZABLE, SERIALIZABLE);
            commandSet.put(T_SESSION, SESSION);
            commandSet.put(T_SHUTDOWN, SHUTDOWN);
            commandSet.put(T_SIMPLE, SIMPLE);
            commandSet.put(T_SIZE, SIZE);
            commandSet.put(T_SOURCE, SOURCE);
            commandSet.put(T_SQL_BIGINT, SQL_BIGINT);
            commandSet.put(T_SQL_BINARY, SQL_BINARY);
            commandSet.put(T_SQL_BIT, SQL_BIT);
            commandSet.put(T_SQL_BLOB, SQL_BLOB);
            commandSet.put(T_SQL_BOOLEAN, SQL_BOOLEAN);
            commandSet.put(T_SQL_CHAR, SQL_CHAR);
            commandSet.put(T_SQL_CLOB, SQL_CLOB);
            commandSet.put(T_SQL_DATALINK, SQL_DATALINK);
            commandSet.put(T_SQL_DATE, SQL_DATE);
            commandSet.put(T_SQL_DECIMAL, SQL_DECIMAL);
            commandSet.put(T_SQL_DOUBLE, SQL_DOUBLE);
            commandSet.put(T_SQL_FLOAT, SQL_FLOAT);
            commandSet.put(T_SQL_INTEGER, SQL_INTEGER);
            commandSet.put(T_SQL_LONGNVARCHAR, SQL_LONGNVARCHAR);
            commandSet.put(T_SQL_LONGVARBINARY, SQL_LONGVARBINARY);
            commandSet.put(T_SQL_LONGVARCHAR, SQL_LONGVARCHAR);
            commandSet.put(T_SQL_NCHAR, SQL_NCHAR);
            commandSet.put(T_SQL_NCLOB, SQL_NCLOB);
            commandSet.put(T_SQL_NUMERIC, SQL_NUMERIC);
            commandSet.put(T_SQL_NVARCHAR, SQL_NVARCHAR);
            commandSet.put(T_SQL_REAL, SQL_REAL);
            commandSet.put(T_SQL_ROWID, SQL_ROWID);
            commandSet.put(T_SQL_SMALLINT, SQL_SMALLINT);
            commandSet.put(T_SQL_SQLXML, SQL_SQLXML);
            commandSet.put(T_SQL_TIME, SQL_TIME);
            commandSet.put(T_SQL_TIMESTAMP, SQL_TIMESTAMP);
            commandSet.put(T_SQL_TINYINT, SQL_TINYINT);
            commandSet.put(T_SQL_VARBINARY, SQL_VARBINARY);
            commandSet.put(T_SQL_VARCHAR, SQL_VARCHAR);
            commandSet.put(T_SQL_TSI_DAY, SQL_TSI_DAY);
            commandSet.put(T_SQL_TSI_FRAC_SECOND, SQL_TSI_FRAC_SECOND);
            commandSet.put(T_SQL_TSI_HOUR, SQL_TSI_HOUR);
            commandSet.put(T_SQL_TSI_MINUTE, SQL_TSI_MINUTE);
            commandSet.put(T_SQL_TSI_MONTH, SQL_TSI_MONTH);
            commandSet.put(T_SQL_TSI_QUARTER, SQL_TSI_QUARTER);
            commandSet.put(T_SQL_TSI_SECOND, SQL_TSI_SECOND);
            commandSet.put(T_SQL_TSI_WEEK, SQL_TSI_WEEK);
            commandSet.put(T_SQL_TSI_YEAR, SQL_TSI_YEAR);
            commandSet.put(T_STATEMENT, STATEMENT);
            commandSet.put(T_STYLE, STYLE);
            commandSet.put(T_T_FACTOR, T);
            commandSet.put(T_TEMP, TEMP);
            commandSet.put(T_TEMPORARY, TEMPORARY);
            commandSet.put(T_TEXT, TEXT);
            commandSet.put(T_TIMESTAMPADD, TIMESTAMPADD);
            commandSet.put(T_TIMESTAMPDIFF, TIMESTAMPDIFF);
            commandSet.put(T_TO_CHAR, TO_CHAR);
            commandSet.put(T_TODAY, TODAY);
            commandSet.put(T_TOP, TOP);
            commandSet.put(T_TRANSACTION, TRANSACTION);
            commandSet.put(T_TYPE, TYPE);
            commandSet.put(T_UNCOMMITTED, UNCOMMITTED);
            commandSet.put(T_USAGE, USAGE);
            commandSet.put(T_VIEW, VIEW);
            commandSet.put(T_WORK, WORK);
            commandSet.put(T_WRITE, WRITE);
            commandSet.put(T_WRITE_DELAY, WRITE_DELAY);
            commandSet.put(T_ZONE, ZONE);

            //
            commandSet.put(T_ACOS, ACOS);
            commandSet.put(T_ASCII, ASCII);
            commandSet.put(T_ASIN, ASIN);
            commandSet.put(T_ATAN, ATAN);
            commandSet.put(T_ATAN2, ATAN2);
            commandSet.put(T_BITAND, BITAND);
            commandSet.put(T_BITLENGTH, BITLENGTH);
            commandSet.put(T_BITOR, BITOR);
            commandSet.put(T_BITXOR, BITXOR);
            commandSet.put(T_CASEWHEN, Tokens.CASEWHEN);
            commandSet.put(T_CONCAT_WORD, CONCAT_WORD);
            commandSet.put(T_COS, COS);
            commandSet.put(T_COT, COT);
            commandSet.put(T_DATEADD, DATEADD);
            commandSet.put(T_DATEDIFF, DATEDIFF);
            commandSet.put(T_DAY_NAME, DAY_NAME);
            commandSet.put(T_DAY_OF_MONTH, DAY_OF_MONTH);
            commandSet.put(T_DAY_OF_WEEK, DAY_OF_WEEK);
            commandSet.put(T_DAY_OF_YEAR, DAY_OF_YEAR);
            commandSet.put(T_DAYNAME, DAYNAME);
            commandSet.put(T_DAYOFMONTH, DAYOFMONTH);
            commandSet.put(T_DAYOFWEEK, DAYOFWEEK);
            commandSet.put(T_DAYOFYEAR, DAYOFYEAR);
            commandSet.put(T_MONTHNAME, MONTHNAME);
            commandSet.put(T_WEEK, WEEK);
            commandSet.put(T_DEGREES, DEGREES);
            commandSet.put(T_DIFFERENCE, DIFFERENCE);
            commandSet.put(T_DMOD, DMOD);
            commandSet.put(T_HEXTORAW, HEXTORAW);
            commandSet.put(T_IFNULL, Tokens.IFNULL);
            commandSet.put(T_LCASE, LCASE);
            commandSet.put(T_LOCATE, LOCATE);
            commandSet.put(T_LOG, LOG);
            commandSet.put(T_LOG10, LOG10);
            commandSet.put(T_LTRIM, LTRIM);
            commandSet.put(T_MONTH_NAME, MONTH_NAME);
            commandSet.put(T_NAMES, Tokens.NAMES);
            commandSet.put(T_NVL, Tokens.IFNULL);
            commandSet.put(T_OCTETLENGTH, OCTETLENGTH);
            commandSet.put(T_PI, PI);
            commandSet.put(T_QUARTER, QUARTER);
            commandSet.put(T_RADIANS, RADIANS);
            commandSet.put(T_RAND, RAND);
            commandSet.put(T_RAWTOHEX, RAWTOHEX);
            commandSet.put(T_REPLACE, REPLACE);
            commandSet.put(T_REVERSE, REVERSE);
            commandSet.put(T_ROUND, ROUND);
            commandSet.put(T_ROUNDMAGIC, ROUNDMAGIC);
            commandSet.put(T_RTRIM, RTRIM);
            commandSet.put(T_SECONDS_MIDNIGHT, SECONDS_MIDNIGHT);
            commandSet.put(T_SIGN, SIGN);
            commandSet.put(T_SIN, SIN);
            commandSet.put(T_SOUNDEX, SOUNDEX);
            commandSet.put(T_SPACE_WORD, SPACE_WORD);
            commandSet.put(T_SUBSTR, SUBSTR);
            commandSet.put(T_SYSDATE, SYSDATE);
            commandSet.put(T_TAN, TAN);
            commandSet.put(T_UCASE, UCASE);

            //
            commandSet.put(T_ASTERISK, Tokens.ASTERISK);
            commandSet.put(T_CLOSEBRACKET, CLOSEBRACKET);
            commandSet.put(T_COLON, Tokens.COLON);
            commandSet.put(T_COMMA, Tokens.COMMA);
            commandSet.put(T_CONCAT, Tokens.CONCAT);
            commandSet.put(T_DIVIDE, Tokens.DIVIDE);
            commandSet.put(T_EQUALS, Tokens.EQUALS);
            commandSet.put(T_GREATER, Tokens.GREATER);
            commandSet.put(T_GREATER_EQUALS, Tokens.GREATER_EQUALS);
            commandSet.put(T_LESS, Tokens.LESS);
            commandSet.put(T_LESS_EQUALS, Tokens.LESS_EQUALS);
            commandSet.put(T_MINUS, Tokens.MINUS);
            commandSet.put(T_NOT_EQUALS, Tokens.NOT_EQUALS);
            commandSet.put(T_NOT_EQUALS_ALT, Tokens.NOT_EQUALS);
            commandSet.put(T_OPENBRACKET, OPENBRACKET);
            commandSet.put(T_PLUS, Tokens.PLUS);
            commandSet.put(T_QUESTION, Tokens.QUESTION);
            commandSet.put(T_SEMICOLON, SEMICOLON);
            commandSet.put(T_ATSYM, Tokens.ATSYM);

            // minimal set of identifier not allowed as table / column / alias names
            // these are in effect interpreted as reserved words used by HSQLDB
            coreReservedWords = new OrderedIntHashSet(128);

            short[] keyword = {
            ADMIN, AS, AND, ALL, ANY, AT, AVG, BY, BETWEEN, BOTH, CALL, CASE,
            CAST, CORRESPONDING, CONVERT, COUNT, COALESCE, CREATE, CROSS,
            DISTINCT, DROP, ELSE, END, EVERY, EXISTS, EXCEPT, FOR, FROM, FULL,
            GRANT, GROUP, HAVING, INTO, IS, IN, INTERSECT, JOIN, INNER, LEFT,
            LEADING, LIKE, MAX, MIN, NATURAL, NULLIF, NOT, ON, ORDER, OR,
            OUTER, PRIMARY, REFERENCES, RIGHT, SELECT, SET, SOME, STDDEV_POP,
            STDDEV_SAMP, SUM, TABLE, THEN, TO, TRAILING, TRIGGER, UNION,
            UNIQUE, USING, VALUES, VAR_POP, VAR_SAMP, WHEN, WHERE, WITH,
        };

            for (int i = 0; i < keyword.Length; i++)
            {
                coreReservedWords.add(keyword[i]);
            }
        }

        public static int get(String token)
        {

            int type = reservedKeys.get(token, -1);

            if (type == -1)
            {
                return commandSet.get(token, -1);
            }

            return type;
        }

        public static bool isCoreKeyword(int token)
        {
            return coreReservedWords.contains((short)token);
        }

        public static bool isKeyword(String token)
        {
            return reservedKeys.containsKey(token);
        }

        public static int getKeywordID(String token, int defaultValue)
        {
            return reservedKeys.get(token, defaultValue);
        }

        public static int getNonKeywordID(String token, int defaultValue)
        {
            return commandSet.get(token, defaultValue);
        }

        public static String getKeyword(int token)
        {

            String key = (String)reservedKeys.getKey(token);

            if (key != null)
            {
                return key;
            }

            key = (String)commandSet.getKey(token);

            return key;
        }

        private static OrderedIntHashSet coreReservedWords;

        public static short[] SQL_INTERVAL_FIELD_CODES = new short[] {
        Tokens.YEAR, Tokens.MONTH, Tokens.DAY, Tokens.HOUR, Tokens.MINUTE,
        Tokens.SECOND
    };
        public static String[] SQL_INTERVAL_FIELD_NAMES = new String[] {
        Tokens.T_YEAR, Tokens.T_MONTH, Tokens.T_DAY, Tokens.T_HOUR,
        Tokens.T_MINUTE, Tokens.T_SECOND
    };
    }
}
